SQLiteConstraintException:错误代码19:约束失败

Nul*_*ion 19 sqlite android

我在SQLite数据库中插入时遇到异常

以下代码给出了例外情况:

mDbHelper.createUser("pablo","a","a","a","a");
Run Code Online (Sandbox Code Playgroud)

来自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);
    }
Run Code Online (Sandbox Code Playgroud)

在最后一行创建了异常: return mDb.insert("user", null, initialValues);

Pen*_*m10 39

您正在插入副本email.

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

  • 我不知道你是如何构建的,但可能你必须增加版本号并重新创建表. (2认同)
  • 为了澄清,op不是在`insert(...)`语句中_inserting_重复的`email`字段,而是在`CREATE TABLE`语句中指定`email`列两次(因此是一个重复的列). (2认同)