2010-12-21 133 views
19

我收到异常,当我在我的SQLite数据库执行插入SQLiteConstraintException:错误代码19:约束失败

下面的代码给了我异常:

mDbHelper.createUser("pablo","a","a","a","a"); 

从mDbHelper代码( MyDbAdapter):

private static final String USER_TABLE_CREATE = "CREATE TABLE user (email varchar, password varchar, fullName varchar, mobilePhone varchar, mobileOperatingSystem varchar, PRIMARY KEY (email))"; 

public long createUser(String email, String password, String fullName, String mobilePhone, String mobileOperatingSystem) 
    { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put("email",email); 
     initialValues.put("password",password); 
     initialValues.put("fullName",fullName); 
     initialValues.put("mobilePhone",mobilePhone); 
     initialValues.put("mobileOperatingSystem",mobileOperatingSystem); 
     return mDb.insert("user", null, initialValues); 
    } 

的最后一行,创建例外:return mDb.insert("user", null, initialValues);

回答

39

您正在插入一个副本email

另外推荐的方法是将_ID列作为主键,即使您不使用它。这种方式在未来的使用,如在适配器或列表中使用,你不必解决。

+0

不,我没有,数据库是空的,而巴勃罗是我插入的第一封电子邮件... – NullPointerException 2010-12-21 12:35:23

+0

再次检查,你错过了那里的东西。它不应该是空的。 – Pentium10 2010-12-21 12:36:23

+0

ohhhh是你是真实的,我插入的值永久保存,每当我测试我的应用程序我想添加一个当前保存在数据库中的值...我did'nt知道那.... 。我该如何清理数据库,每次打开我的应用程序? – NullPointerException 2010-12-21 12:39:28