2012-03-29 10 views
3

Ich habe durch mehrere Websites für jede nützliche Dokumentation durchgesehen und sind leer ausgegangen. Die Flussdiagramme von der offiziellen Seite könnten auch Griechisch sein und Beispiele, die ich von anderen relevanten Posts auf dieser Seite versucht habe, haben mir Fehler gemacht. Ich schreibe eine einfache App, um Benutzereingaben in eine Datenbank zu platzieren, aber ich brauche eine Kombination von 2 Spalten, um einzigartig zu sein. Von dem, was ich gesehen habe, kann dies mit EINZIGARTIGEN oder PRIMÄRSCHLÜSSEL erreicht werden. Ich brauche auch eine Möglichkeit zur Erfassung des Fehlers Toast den Benutzer, dass ihre Eingabe ist fehlerhaft. Ich weiß, dass ich dies auf der Java-Seite leicht genug tun kann, aber ich würde es vorziehen, nicht auf jedem vorgeschlagenen Einsatz die Tabelle zu durchlaufen.SQLite create table mit UNIQUE Kombination von Spalten

Das ist, was ich bisher habe:

db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL;"); 

Die Tabelle richtig konstruiert, bis ich UNIQUE ...

hinzugefügt, warf: ERROR/SQLiteOpenHelper (1037): android.database.sqlite .SQLiteException: near ";": Syntaxfehler: CREATE TABLE-Inventar (Kategorie Text, itemNum TEXT, Menge INTEGER, Preis REAL, INTEGER Bild, Constraint UNQ UNIQUE (Kategorie, itemNum) ON CONFLICT FAIL;

EDIT:

... füllen ContentValues ​​Werte mit Benutzereingabe.

try{ 
db.getWritableDatabase().insert(DatabaseHelper.TABLE_NAME, DatabaseHelper.CATEGORY, values); 
fillItemNumbers(); // Updates screen  
} 
catch(SQLiteConstraintException e) 
{ 
Toast 
.makeText(this, "User error",Toast.LENGTH_LONG) 
.show();    
} 

Antwort

2

Sie haben nicht übereinstimmende Klammern. Es sollte eine weitere ) nach FAIL geben.

Sobald Sie das sortiert haben, können Sie die Ausnahme abfangen, die auftritt, wenn die Beschränkung verletzt wird.

try { 
    // insert new data 
} catch (SQLiteConstraintException e) { 
    Toast.makeText(context, 
        "The combination of A and B must be unique", 
        Toast.LENGTH_LONG).show(); 
} 
+0

Facepalm! Ich gebe jetzt die Karte meines Programmierers zurück und ziehe mich zurück, um in einer Ecke zu schmollen. – AnthonyW

+0

Irgendwelche Gedanken zur zweiten Frage? Ich brauche auch eine Möglichkeit, den Fehler zu erfassen Toast den Benutzer, dass ihre Eingabe fehlerhaft ist – AnthonyW

+0

Sicher, zu meiner Antwort hinzugefügt. –

Verwandte Themen