2011-09-29 77 views
0

我得到了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; 
} 
+0

在异常本身中是否有更多信息?也许哪个约束失败? – Knickedi

+0

请向我们展示您的'createContentValues'方法。 – Knickedi

+0

我再次更新,它是我的createContentValues方法,这是什么异常说:“09-29 19:12:13.329:错误/ SQLiteDatabase(904):错误插入start_time =测试caller_id =测试end_time =测试caller_name =测试“ – czadam

回答

1

在你的方法参数检查null值? ;-)基于更新

哈阿

编辑,我知道:一个null值。 ;-)
您使用CALLER_NAME两次......(顺便说一句CALLER_ID太)

编辑基于评论

除了null价值,他试图设置主键(意外)。这可能是主要原因(除了实际值null)。

+0

是的,那不是问题。我更新了我的帖子,尝试插入虚拟原始数据,但仍然收到错误消息。 – czadam

+0

嗯,这非常emberassing,我纠正它,但它没有解决我的问题。我仍然有同样的错误(谢谢你的注意) – czadam

+0

这很简单,它必须是'空'。请检查您是否设置了所有需要的表列字段以及您的常量是否包含正确的值而不是两次包含相同的列。他们有这样的相似的名字只有一个字母的区别... – Knickedi

相关问题