У меня есть база данных, которая заполняется пользовательским EditTexts. Ни один из редактируемых текстов не должен содержать пустых полей. Я знаю, что могу проверить это с помощью пары простых операторов if: if myEditText.getText().toString().equals("") // display error
. Однако я предпочел бы использовать эту возможность, чтобы освежить свой SQLite и перехват ошибок (как показано в моем методе добавления). Как мне изменить столбцы в таблице ниже на NOT NULL
и создать / перехватить ошибку, когда пользователь пытается добавить / обновить пустые поля?
Моя таблица базы данных:
db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL);");
Мой метод добавления:
... заполнить 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();
}
Мой метод обновления:
... заполнить 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:
Я немного покопался и придумал это:
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);");
Это то, что я ищу? Если так, как я могу использовать это в своих интересах (см. Выше)?