我在lead_table中插入值但由于PRIMARY KEY必须是唯一的,因此会收到错误。 以下是我的代码。请指导我如何解决它,因为我很难找到确切的错误。我很难找到确切的错误。
public void insertLead(ArrayList<String> data) {
String insertString = "insert into lead_table " + " Values(";
int row = 0;
String inString = "";
for (int i = 0; i < data.size(); i++) {
inString = inString + "\"" + data.get(i) + "\",";
}
inString = inString.substring(0, inString.length() - 1);
row = mDb.rawQuery("select * from lead_table;", null).getCount() + 1;
insertString = insertString + row + "," + inString + ");";
mDb.execSQL(insertString);
}
答案 0 :(得分:1)
此代码尝试通过计算表中的记录来计算尚未使用的ID值,但这并不能保证结果值实际上未使用。
例如,如果表格包含三个ID值1
,3
和4
,则此代码计算的值将为4
。
您的PRIMARY KEY列已定义为AUTOINCREMENT。 documentation说:
如果在插入上没有指定ROWID,或者指定的ROWID的值为NULL,则会自动创建适当的ROWID。
因此,您可以通过使用NULL而不是数字告诉数据库为您创建ID:
...
inString = inString.substring(0, inString.length() - 1);
// no row variable
insertString = insertString + "NULL" + "," + inString + ");";
mDb.execSQL(insertString);
...