2017-08-11 25 views
0

どういうわけかコードはデータを挿入しません。私はコンテンツの値にデータをハードコードしています。SQLite Insert does not work

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を返します。

これは私のデータソースからのものではありません。それを個別にトーストしただけで、チェックするだけでハードコードされていて、まだそれはありません。

HERESに私の定義

//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テーブルが完全に動作します。 AndroidのAPIによると、あなたの時間

+1

あなたは 'CREATE_TABLE_EVENT' - ' ... "VARCHAR" + EVENT_EVENT_TYPE ... 'にカンマがありません。それを修正してから、あなたのアプリをアンインストールして再インストールしてください。 –

+1

+ EVENT_ITEM_IMAGE + "VARCHAR"の後に "、"が見つかりませんでした。それを確認してください。また、Stethoや​​その他のメカニズムを使ってデバッグし、テーブルが正常に作成されたかどうかを確認してください。 – Aveek

+0

これは私のエラーです。EVENT_ITEM_IMAGEを遅く追加しました。 @Aveekどのように私はstethoを保持することができますどのように動作します – Light

答えて

0

ため おかげで

戻り値は、新たに挿入された行の行IDを長い間、または-1エラーが

を発生した場合はたぶんデバッグのためのより多くを教えてログに記録します。

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

create table文ストリングの最後にセミコロンがありません。試してみてください:

+2

これは間違っています。 [SQL文](http://www.sqlite.org/syntax/sql-stmt-list.html)では、複数の文を使用する場合にのみ区切り文字を必要としますが、これは 'execSQL'でサポートされていません。 –

+0

@CLセパレータまたは文末のセミコロンを意味しますか? – Light

+0

@ライトどのように呼び出すかは関係ありません。リンク先のドキュメントを参照してください。 –