2011-07-25 18 views
0

挿入コードがandroid.database.sqlite.SQLiteConstraintExceptionが生成され、起動した場合は、挿入コードAndroid SQLiteインサート。 android.database.sqlite.SQLiteConstraintException

final String sql = "insert into my_db (id, tmp_reason_code, tmp_count, tmp_id) values (?, ?, ?, ?)"; 
SQLiteDatabase db = LocalDB.getInstance().getWritableDatabase(); 
db.beginTransaction(); 
try { 
    SQLiteStatement stmt = db.compileStatement(sql); 
    stmt.bindLong(1, id); 
    stmt.bindLong(2, 0); 
    stmt.bindLong(3, 0); 
    stmt.bindLong(4, tmp_id); 
    stmt.execute(); 
    db.setTransactionSuccessful(); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 
db.endTransaction(); 
db.close(); 

StringBuilder my_db = new StringBuilder(); 
    my_db.append("create table " + "my_db" + " ("); 
    my_db.append("id integer unique," + 
            "tmp_id integer unique," + 
            "tmp_at datetime ," + 
            "tmp_count integer," + 
            "tmp_reason_code integer);"); 
    db.execSQL(unlocked_achievements.toString()); 

デシベルのコードを作成します。

+0

私はあなたのプロジェクトからテーブルを取り出し、SQLite Browserからチェックすることをお勧めします。それは間違っていることを理解する上で多くの時間を助けます –

答えて

0

あなたは、テーブル定義でこれらを持っている:

id  integer unique 
tmp_id integer unique 

だから、あなたはすでにあなたのテーブルにidまたはtmp_idを持っており、それらを再度挿入しようとすると、それらのカラムにユニーク制約に違反しています。