データベースにアンドロイドでデータを挿入しようとしました。データベースへのインセット時のSQLiteConstraintException
この1つは動作します:
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table study " +
"(percentage integer primary key,videoDuration text,totalTime text,date text)"
);
}
public boolean insertStudy(String percentage, String videoDuration, String totalTime, String date) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("percentage", percentage);
contentValues.put("videoDuration", videoDuration);
contentValues.put("totalTime", totalTime);
contentValues.put("date", date);
db.insert("study", null, contentValues);
return true;
}
をしかし、私は(私は主キーのすべての列を持っていけないよう)のシリアル番号の1以上の列を追加しようとすると、挿入している間、私はエラーを取得します。それはシリアルに挿入する値を保持し、また、主キーとして機能するように、私はカウンターとしてのserialNumberを使用しています
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table study " +
"(serial integer primary key,percentage text,videoDuration text,totalTime text,date text)"
);
}
public boolean insertStudy(String percentage, String videoDuration, String totalTime, String date) {
serialNumber++;
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("serial", serialNumber);
contentValues.put("percentage", percentage);
contentValues.put("videoDuration", videoDuration);
contentValues.put("totalTime", totalTime);
contentValues.put("date", date);
db.insert("study", null, contentValues);
return true;
}
:
これは新しいコード(動作しない)です。私はこのコードでエラーが発生しています:
Error inserting date=27/08/2016 percentage=2.6 serial=1 totalTime=0:0:1 videoDuration=22:96
android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique (code 19)
私はなぜ最初に動作していますが、2番目ではないのか分かりません。 2番目のコードが機能しない理由を理解したい。
私のアプリケーションは最初のコードで動作することができますが、将来はバグが発生する可能性がありますので、2番目のコードを使用します。
パーセンテージをプライマリキーとして保持しているため、プライマリキーが重複している場合は、Base._IDをプライマリキーにして自動インクリメントしてください。独自のものを使用する場合は、アイは重複していません。 –
何かをする前に、StackOverflowに投稿するよりも、例外やエラーをGoogleに迅速かつ効果的に伝えることができます。 ** A **。あなたはダウンボートを避けるでしょう、** B ** **これはあなたの検索クエリを改善する方法です。 – Sufian
[sqlite制約例外プライマリキーは重複している可能性があります](http://stackoverflow.com/questions/26986687/sqlite-constraint-exception-primary-key-must-be-unique) – Sufian