2010-12-21 15 views
19

Dostaję ten wyjątek, kiedy zrobić wkładkę w mojej bazy danych SQLiteSQLiteConstraintException: kod błędu 19: ograniczenie udało

Poniższy kod daje mi wyjątek:

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

Kod z 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); 
    } 

wyjątkiem jest tworzony w ostatnim wierszu: return mDb.insert("user", null, initialValues);

Odpowiedz

39

Wstawiasz duplikat email.

Plus zalecanym sposobem jest posiadanie kolumny _ID jako klucza podstawowego, nawet jeśli jej nie używasz. W ten sposób przy przyszłych zastosowaniach, takich jak użycie w adapterze lub na liście, nie będziesz musiał tego robić.

+0

Nie, nie, baza danych jest pusta, a pablo to pierwszy adres e-mail, który w nią wstawiam ... – NullPointerException

+0

Podwójne sprawdzenie jeszcze raz, coś tam przegapiłeś. To nie powinno być puste. – Pentium10

+0

ohhhh tak, jesteś na prawdę, wartości które wstawiłem są zapisywane na stałe, za każdym razem gdy testuję swoją aplikację próbuję dodać wartość, która jest obecnie zapisana w bazie danych ... nie wiedziałem, że .... iw jaki sposób mogę wyczyścić bazę danych, a następnie otworzyć aplikację? – NullPointerException

Powiązane problemy