2010-12-21 131 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