我得到了android SQLiteConstraintException:错误代码19:约束失败的异常。我看到这个主题有很多问题,我读了一堆,但仍然无法弄清楚我做错了什么。仅仅是我的表格模式。android SQLiteConstraintException:错误代码19:约束失败
private static final String DATABASE_CREATE = "CREATE TABLE calls (call_ID
INTEGER AUTO INCREMENT PRIMARY KEY NOT NULL, caller_id TEXT NOT NULL, "+
caller_name TEXT NOT NULL, called_id TEXT NOT NULL, called_name TEXT NOT NULL," +
"start_time TEXT NOT NULL, end_time TEXT NOT NULL);";
我添加了一个单行,并引发异常。
public long addCall(String caller_id, String caller_name, String called_id,
String called_name, String start, String end) {
ContentValues initialValues = createContentValues(caller_id, caller_name,called_id,called_name, start,end);
return database.insert(DATABASE_TABLE, null, initialValues);
}
我重写了SQLHelpers onOpen方法,清除每个打开的表,但它没有帮助。
public void onOpen (SQLiteDatabase database){
database.execSQL("DROP TABLE IF EXISTS calls");
onCreate(database);
Log.w(DBHelper.class.getName(),"DB onOpen");
}
UPDATE:问题不是这个,我尝试过空,因为我只添加这些字符串,我得到了错误。
dbAdapter.addCall("test", "test","test", "test", "test", "test");
更新2:这是我的createContentvalue方法:
public static final String CALLER_ID = "caller_id";
public static final String CALLER_NAME = "caller_name";
public static final String CALLED_ID = "called_id";
public static final String CALLED_NAME = "called_name";
public static final String START = "start_time";
public static final String END = "end_time";
public static final String DATABASE_TABLE = "calls";
private ContentValues createContentValues(String caller_id, String caller_name, String called_id, String called_name, String start, String end) {
ContentValues values = new ContentValues();
values.put(CALLER_ID, caller_id);
values.put(CALLER_NAME, caller_name);
values.put(CALLED_ID, called_id);
values.put(CALLED_NAME, called_name);
values.put(START, start);
values.put(END, end);
return values;
}
在异常本身中是否有更多信息?也许哪个约束失败? – Knickedi
请向我们展示您的'createContentValues'方法。 – Knickedi
我再次更新,它是我的createContentValues方法,这是什么异常说:“09-29 19:12:13.329:错误/ SQLiteDatabase(904):错误插入start_time =测试caller_id =测试end_time =测试caller_name =测试“ – czadam