2017-05-26 6 views
0

私のコードは次のとおりです。datepickerからsqliteに日付を格納する方法は?

taskDB.insertDate(selectedDate,selectedId); 

SQLiteのDB:

String sql = "CREATE TABLE IF NOT EXISTS " +TABLE_NAME+ "(" +KEY_ID+ " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +KEY_TASKNAME+ " TEXT, " +KEY_STATUS+ " INTEGER," +KEY_FAV+ " INTEGER," +KEY_DATE+ " TEXT"+")"; 
    db.execSQL(sql); 

INSERTクエリ:

public void insertDate(String date, int id){ 
    String sql = "UPDATE task SET date = "+date+" WHERE id = " +id; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Log.d(TAG,"id is:" +id+ ", date is: "+date);// log is below 
    db.execSQL(sql); 
} 

ログイン:私が得るINSERTクエリのログで

05-26 10:23:14.538 15298-15298/? D/TaskDB: id is:2, date is: 17-05-2017 

正しい日私はdatepickerから選択しましたが、テーブルでは異なるフォーマットです。あなたに文字列値を追加している時はいつでもThisは、単一引用符で日付を置き、私が変更されている日付

+0

sqliteデータ型を設定しようとします。日付 –

+2

日付の前後に一重引用符を入れて、UPDATEタスクのように表します。SET date = '"+ date +"' WHERE id = "+ id;' –

答えて

0

変更の挿入後sqliteテーブルのスクリーンショットのようなクエリで、再び

String sql = "UPDATE task SET date = '"+date+"' WHERE id = " +id;

してみてくださいクエリでは、それらを一重引用符で囲む必要があります。

0

commentedとして、あなたは「(docs

から

"UPDATE task SET date = '"+date+"' WHERE id = " +id; 
//     ^ ^

のように、文字列を表現するためにdateの周りに単一引用符 の中の文字列を囲むことによって形成された文字列定数を単一引用符を配置する必要があります)。文字列内の一重引用符は、二重引用符を行内に2つ入れることでエンコードすることができます(Pascalのように)。 バックスラッシュ文字を使用したCスタイルエスケープは、標準 SQLではないためサポートされていません。

関連する問題