Ich habe eine Datenbank, die von benutzerdefinierten EditTexts gefüllt wird. Keiner der Bearbeitungstexte sollte leere Felder zulassen. Ich weiß, dass ich das mit ein paar einfachen if-Anweisungen überprüfen kann: if myEditText.getText().toString().equals("") // display error
. Allerdings würde ich diese Gelegenheit nutzen, um meine SQLite aufzufrischen und Fehler zu fangen (wie in meiner Add-Methode demonstriert). Wie würde ich die Spalten in der folgenden Tabelle auf NOT NULL
ändern und einen Fehler generieren/abfangen, wenn ein Benutzer versucht, leere Felder hinzuzufügen/zu aktualisieren?NOT NULL Spalten in SQLite und Fehler fangen
Meine Datenbanktabelle:
db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL);");
Meine Methode add:
... füllen ContentValues values
try{
db.getWritableDatabase().insertWithOnConflict(DatabaseHelper.TABLE_NAME, DatabaseHelper.CATEGORY, values, SQLiteDatabase.CONFLICT_FAIL);
fillItemNumbers();
}
catch(SQLiteConstraintException e)
{
Toast
.makeText(MyActivity.this, etItemNum.getText().toString() + " already exists in " + catSpinner.getSelectedItem().toString() +". Consider using Update.",Toast.LENGTH_LONG)
.show();
}
Meine Update-Methode:
... füllen ContentValues values
String[] args = {catSpinner.getSelectedItem().toString(), etItemNum.getText().toString()};
int rowsAffected = db.getWritableDatabase().update(DatabaseHelper.TABLE_NAME, values, DatabaseHelper.CATEGORY + "=? AND " + DatabaseHelper.ITEM_NUMBER + "=?" , args);
UPDATE: habe ich ein wenig zu graben und kam mit dieser:
db.execSQL("CREATE TABLE inventory (category TEXT NOT NULL, itemNum TEXT NOT NULL, quantity INTEGER NOT NULL, price REAL NOT NULL, image INTEGER NOT NULL, UNIQUE(category, itemNum) ON CONFLICT FAIL);");
Ist das, was ich suche? Wenn ja, wie kann ich das zu meinem Vorteil nutzen (siehe oben)?
Die Tabelle enthält nichts außer Testzeilen atm. Ich kann es wegblasen und es ohne Probleme wieder aufbauen. Dieses Problem ist, dass ich völlig ahnungslos bin, wie man NOT NULL für die Spalten implementiert. – AnthonyW
folgen Sie dem Update oben ... – Mayank
ausgezeichnet; Wir sind auf der gleichen Seite – AnthonyW