每当我尝试插入到客户端表时,我都会收到异常。 这是客户表:
db.execSQL("CREATE TABLE " + TABLE_CLIENTS + " (" +
COLUMN_CID + " INTEGER PRIMARY KEY, " +
COLUMN_CLIENTNAME + " TEXT, " + COLUMN_ADDRESS + " TEXT, " + COLUMN_LOANAMOUNT + " DECIMAL)");
这是插入方法:
public long addClients(Client c) {
ContentValues cv = new ContentValues();
cv.put(COLUMN_CID, c.getCId());
cv.put(COLUMN_CLIENTNAME, c.getCName());
cv.put(COLUMN_ADDRESS, c.getAddress());
cv.put(COLUMN_LOANAMOUNT, c.getLoanamount());
return ourDatabase.insert(TABLE_CLIENTS, null, cv);
}
正好在LogCat中读取对象,所有属性都是正确的。
logcat的: logcat的:
2.017 25026-25026/com.example.androidserversocket
D/sa:﹕ 0 Hussein Nabatieh 32 08-06 15:12:12.017 25026-25026/com.example.androidserversocket
D/type:﹕ C 08-06 15:12:12.017 25026-25026/com.example.androidserversocket
D/Client:﹕ in c 08-06 15:12:12.027 25026-25026/com.example.androidserversocket
E/SQLiteDatabase﹕ Error inserting loanamount=32.0 address=Nabatieh cid=0 cname=Hussein android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
答案 0 :(得分:1)
表中似乎已存在c.getCId()的ID。
之前尝试使用此ID,如果存在,则可能需要进行更新。
答案 1 :(得分:0)
您的问题是已存在具有相同cid
值的行。
INTEGER PRIMARY KEY列可以自动获取未使用的值,但只有当您没有明确地将此列的值放入ContentValues
对象时,才会执行此操作。