2017-08-11 107 views
0

不知何故,代碼只是不插入數據。即使我硬編碼數據到內容值。SQLite的插入不工作

public void addEvent(String username, String itemName, String price, String imageId, String eventType) { 

     SQLiteDatabase db = this.getWritableDatabase(); 

      ContentValues values = new ContentValues(); 
      values.put(EVENT_USERNAME, username); 
      values.put(EVENT_ITEM_NAME, itemName); 
      values.put(EVENT_ITEM_PRICE, price); 
      values.put(EVENT_ITEM_IMAGE, imageId); 
      values.put(EVENT_EVENT_TYPE, eventType); 

      long result; 
      result = db.insert(TABLE_EVENT, null, values); 

      Toast.makeText(context, "RESULT = " + result, Toast.LENGTH_SHORT).show(); 

     db.close(); 
    } 

結果總是返回-1。

它不是從我已經連帶烤出來,甚至硬編碼只是爲了檢查,它仍然犯規我的數據源。

我的繼承人定義

//table name 
private static final String TABLE_USERS = "table_users"; 
private static final String TABLE_EVENT = "table_event" 
//table_event columns 
private static final String EVENT_ID = "id"; 
private static final String EVENT_USERNAME = "username"; 
private static final String EVENT_ITEM_NAME = "item_name"; 
private static final String EVENT_ITEM_PRICE = "item_price"; 
private static final String EVENT_ITEM_IMAGE = "item_image_id"; 
private static final String EVENT_EVENT_TYPE = "event_type"; 


private static final String CREATE_TABLE_EVENT = "CREATE TABLE " + TABLE_EVENT 
     + " (" + EVENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + EVENT_USERNAME + " VARCHAR, " + EVENT_ITEM_NAME + " VARCHAR, " + EVENT_ITEM_PRICE + " VARCHAR, " 
     + EVENT_ITEM_IMAGE + " VARCHAR" + EVENT_EVENT_TYPE + " VARCHAR)"; 

users表中完美的作品。 感謝您的時間

+1

您在'CREATE_TABLE_EVENT' - '...「VARCHAR」+ EVENT_EVENT_TYPE ...'中缺少逗號。解決這個問題,然後卸載並重新安裝你的應用程序。 –

+1

您在+ EVENT_ITEM_IMAGE +「VARCHAR」後錯過了「,」。覈實。此外,使用Stetho或任何其他機制來調試和看到創建成功與否 – Aveek

+0

好感謝的表,那是我的錯誤,我加EVENT_ITEM_IMAGE晚了,這是一個複製和粘貼操作。 @Aveek我怎麼能得到stetho的保持和它是如何工作 – Light

回答

0

根據Android的API

返回渴望新插入的行的行號,或-1,如果發生錯誤

也許記錄告訴你更多的調試。

-1
/*...*/ EVENT_EVENT_TYPE + " VARCHAR)"; 

創建表語句字符串末尾缺少分號。嘗試:

/*...*/ EVENT_EVENT_TYPE + " VARCHAR);"; 
+2

這是錯誤的; [SQL語句](http://www.sqlite.org/syntax/sql-stmt-list.html)使用多個語句,其不受'execSQL'反正只支持時需要的隔板。 –

+0

@CL你的意思是分離器或聲明分號 – Light

+0

結束@Light不要緊,你想怎麼稱呼它。請參閱我鏈接到的文檔。 –