2016-10-03 3 views
0

2列のテーブルがあります。キーすべての値がAutoIncrementまたはDefaultのレコードを挿入します。

  1. - 主キー、自動インクリメント
  2. タイムスタンプ - 日時、デフォルト - > CURRENT_TIMESTAMP

私はSqliteOpenHelperオブジェクトの助けを借りて、このテーブルに値を挿入しようとしています。しかし、それは例外をスロー:

public void logTime() { 

    SQLiteDatabase db = getWritableDatabase(); 

    db.insert(TABLE_LOG_TIME, null, new ContentValues()); 
} 

例外:

E/SQLiteLog: (1) near "null": syntax error 
E/SQLiteDatabase: Error inserting 
     android.database.sqlite.SQLiteException: near "null": syntax error (code 1): , while compiling: INSERT INTO log_time(null) VALUES (NULL) 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 
     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 
     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
     at com.livinglifetechway.mytime.db.DatabaseHelper.logScreenUnlock(DatabaseHelper.java:62) 
     at com.livinglifetechway.mytime.ScreenUnlockBroadcastReceiver.onReceive(ScreenUnlockBroadcastReceiver.java:25) 
     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2732) 
     at android.app.ActivityThread.access$1800(ActivityThread.java:153) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1428) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5441) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 

データベース呼び出しのonCreate:

@Override 
public void onCreate(SQLiteDatabase db) { 

    // Create Statements 
    String CREATE_TABLE_LOG_TIME = "CREATE TABLE " + TABLE_LOG_TIME + " " + 
      "(" + 
      KEY_LOG_TIME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      KEY_LOG_TIME_TIME + " DATETIME DEFAULT CURRENT_TIMESTAMP" + 
      ")"; 

    // Execute statements 
    db.execSQL(CREATE_TABLE_LOG_TIME); 

} 

すべての値は、デフォルト/ AUTO_INCREMENT値です。

このテーブルにレコードを挿入するにはどうすればよいですか?

ContentValues cv = new ContentValues(); 
cv.putNull(KEY_LOG_TIME_TIME); 
db.insert(TABLE_LOG_TIME, null, cv); 
+0

と交換してください: – Rahul

+0

データベースの実装コードですか? –

+0

@Rahulこれらの2行は単純な単純な方法の中にあります。 – kirtan403

答えて

1

はNULL値と少なくとも1つの列を指定して、デフォルト値を持つ行を挿入するにはdb.insert(TABLE_LOG_TIME、null、new ContentValues())の前に行う。あなたは表示できますか?
+0

これはうまくいきました!ありがとう! :) – kirtan403

+0

私は 'putNull'について新しくはありません – kirtan403

0

はあなたが物事が何であるか、この

db.insert(TABLE_LOG_TIME, null, new ContentValues()); 

db.insert(TABLE_LOG_TIME, null, null); 
+1

これは動作していません..同じエラー – kirtan403

関連する問題