2017-10-07 56 views
-3

嗨我一直在試圖插入一些數據插入到表香港專業教育學院在Android Studio中繼承人的代碼Insert命令不sqlite的工作在Android Studio中2.3.3

public class admin_manipulation extends AppCompatActivity { 

EditText Train_name; 
EditText Train_no; 
EditText Train_start; 
EditText Train_end; 
EditText Train_seats; 
Button insert; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_admin_manipulation); 
    insert=(Button)findViewById(R.id.add); 
    Train_name=(EditText)findViewById(R.id.trainname); 
    Train_no=(EditText)findViewById(R.id.trainno); 
    Train_start=(EditText)findViewById(R.id.Startlocation); 
    Train_end=(EditText)findViewById(R.id.terminationpoint); 
    Train_seats=(EditText)findViewById(R.id.seats); 

} 
public void addrecords(View view) 
{ 
    String str_Train_name=Train_name.getText().toString(); 
    String str_Train_no=Train_no.getText().toString(); 
    String str_Train_start=Train_start.getText().toString(); 
    String str_Train_end=Train_end.getText().toString(); 
    String str_Train_seats=Train_seats.getText().toString(); 

    SQLiteDatabase Trains = openOrCreateDatabase("Train_list",MODE_PRIVATE,null); 
    Trains.execSQL("CREATE TABLE IF NOT EXISTS Train_list(Train_name VARCHAR,Train_no VARCHAR,Train_start VARCHAR, Train_end VARCHAR , Seats_Available VARCHAR);"); 
    Toast.makeText(admin_manipulation.this, "The Add records Function has been called" , Toast.LENGTH_SHORT).show(); 
    String temp="INSERT INTO Train_list VALUES("+str_Train_name+","+str_Train_no+","+str_Train_start+","+str_Train_end+","+str_Train_seats+");"; 
    Toast.makeText(admin_manipulation.this,temp, Toast.LENGTH_LONG).show(); 
    Trains.execSQL(temp); 
    } 

創造了有史以來時我把這個活動我得到的錯誤信息

unfortunately db has stopped 

(DB是應用程序的名稱)

,所以我決定註釋掉說

Trains.execSQL(temp); 

,我發現該活動正在沒有問題什麼那麼應用程序沒有崩潰,所以我決定敬酒插入查詢,以察看是否有不妥的地方執行。

Inserted Query

據我可以告訴它看起來不錯,只要我有

Trains.execSQL(temp); 

在我的代碼購買應用程序崩潰(臨時包含查詢我剛烤)

任何幫助,將不勝感激。

+1

你能在更小的範圍內重現問題?例如。寫純的SQLite/MySQL的句法幾行(其中一個是由你爲什麼標籤齊備的方式?),這導致了同樣的問題,而不允許額外的編程語言的方式獲得。 – Yunnosch

回答

-1

試試這個

SQLiteDatabase db = openOrCreateDatabase("Train_list.db", SQLiteDatabase.CREATE_IF_NECESSARY , null); 
    try { 
     final String CREATE_TABLE_TRAIN_LIST = "CREATE TABLE IF NOT EXISTS Train_list (" 
       + "ID INTEGER primary key AUTOINCREMENT," 
       + "Train_name VARCHAR," 
       + "Train_no VARCHAR," 
       + "Train_start VARCHAR," 
       + "Train_end VARCHAR," 
       + "Seats_Available VARCHAR);"; 
     db.execSQL(CREATE_TABLE_TRAIN_LIST); 
     Toast.makeText(admin_manipulation.this, "table created ", Toast.LENGTH_LONG).show(); 
     String sql = 
      "INSERT or replace INTO Train_list (Train_name, Train_no, Train_start, Train_end, Seats_Available) VALUES(" + str_Train_name + ", " + str_Train_no + ", " + str_Train_start ", " + str_Train_end ", " + str_Train_seats + ")" ;  
       db.execSQL(sql); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
} 
+0

謝謝你這幫助了這麼多新的這個,這幫助我理解這麼多! –

+0

我建議你在開始編碼之前查找SQLite數據庫和查詢的語法。很好地理解它。互聯網上有大量的資源。 – Journey

-1

您還沒有實現getWritableDatabase()方法+在您的SQL查詢,你沒有用單引號"INSERT INTO Train_list VALUES("+str_Train_name+","+str_Train_no+","+str_Train_start+","+str_Train_end+","+str_Train_seats+");";

改變它

String temp="INSERT INTO Train_list VALUES(" '"+str_Train_name+"'","'"+str_Train_no+"'","'"+str_Train_start+"'","'"+str_Train_end+"'","'"+str_Train_seats+"'");";