0
我有問題將值插入到我的sqllite數據庫。SQLite異常
private static final String SQL_CREATE_TABLE_METER = "create table "
+ TABLE_METER + " ("
+ METER_KEY_ID + " integer primary key autoincrement, "
+ METER_KEY_METER_ID + " text unique, "
+ METER_KEY_ACCOUNT_ID + " text, "
+ METER_KEY_MODEL + " text, "
+ METER_KEY_TYPE + " text, "
+ METER_KEY_LOCATION + " text, "
+ METER_KEY_ACCRUED + " double, "
+ METER_KEY_CURRENT + " double, "
+ METER_KEY_INSTALLATION_ACT_CODE + " text, "
+ METER_KEY_INSTALLATION_LOCATION_ID + " text);";
所以我METER_KEY_ID
是獨一無二的。
我加入新米,顯示日誌與新插入的ID。
public void addMeters(List<Meter> meters, String accountId) {
mDb.beginTransaction();
try {
for(int i = 0; i < meters.size(); i++) {
Log.d("VodomerDBHelper", meters.get(i).id);
mDb.insert(TABLE_METER, null, createMeterValues(meters.get(i), accountId));
}
mDb.setTransactionSuccessful();
} finally {
mDb.endTransaction();
}
}
我的日誌顯示我旁邊:
03-24 13:13:27.126: D/VodomerDBHelper(7299): 29980
03-24 13:13:28.596: D/VodomerDBHelper(7299): 29981
03-24 13:13:29.396: D/VodomerDBHelper(7299): 29983
03-24 13:13:29.426: D/VodomerDBHelper(7299): 29982
03-24 13:13:29.756: D/VodomerDBHelper(7299): 29984
03-24 13:13:30.056: D/VodomerDBHelper(7299): 29985
因此,所有的值是不同的。但我有下一個例外
03-24 13:13:27.166: E/SQLiteDatabase(7299): Error inserting id=29980 installation_location_id=93129966 model=СКВ-15/Х ВIР-М account_id=3072460011 location=Сан.узел current=0.0 installation_act_code=29935 type=расход холодной вод accrued=4.0
03-24 13:13:27.166: E/SQLiteDatabase(7299): android.database.sqlite.SQLiteConstraintException: column id is not unique (code 19)
03-24 13:13:27.166: E/SQLiteDatabase(7299): at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
03-24 13:13:27.166: E/SQLiteDatabase(7299): at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
接下來我檢查我的sqllite數據庫,一切都很好。新數據在這裏,現在是問題。 但爲什麼異常被拋出?
這個異常不是來自你的循環,至少不是第一遍。你可以發佈完整的堆棧跟蹤,指出你在哪裏調用導致違反約束的插入操作? – laalto
「METER_KEY_METER_ID」的值是否在您插入的值中唯一?來自logcat的 – BadIdeaException
,很明顯METER_KEY_METER_ID 29980被插入兩次。由此,正在拋出「非唯一」異常。 可能是你可以檢查列表米變量在它 –