2014-03-24 38 views
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數據庫,一切都很好。新數據在這裏,現在是問題。 但爲什麼異常被拋出?

+0

這個異常不是來自你的循環,至少不是第一遍。你可以發佈完整的堆棧跟蹤,指出你在哪裏調用導致違反約束的插入操作? – laalto

+0

「METER_KEY_METER_ID」的值是否在您插入的值中唯一?來自logcat的 – BadIdeaException

+0

,很明顯METER_KEY_METER_ID 29980被插入兩次。由此,正在拋出「非唯一」異常。 可能是你可以檢查列表米變量在它 –

回答

0

發現我錯過了。我從其他方法中再插入一次這些值。 謝謝大家。