Я просмотрел несколько сайтов на предмет полезной документации и оказался пустым. Блок-схемы с официального сайта также могут быть греческими, и примеры, которые я пробовал из других соответствующих постов на этом сайте, привели меня к ошибкам. Я пишу простое приложение для размещения пользовательского ввода в базе данных, однако мне нужно сочетание из 2 столбцов, чтобы быть уникальным . Из того, что я видел, это можно сделать с помощью UNIQUE или PRIMARY KEY. Мне также нужен какой-то способ зафиксировать ошибку, чтобы сообщить пользователю, что его ввод неверен . Я знаю, что я могу сделать это на стороне Java достаточно легко, но я бы предпочел не циклически просматривать таблицу при каждой предложенной вставке.
Это то, что я имею до сих пор:
db.execSQL("CREATE TABLE inventory (category TEXT, itemNum TEXT, quantity INTEGER, price REAL, image INTEGER, UNIQUE(category, itemNum) ON CONFLICT FAIL;");
Таблица построена правильно, пока я не добавил UNIQUE ...
Который бросил:
ОШИБКА / SQLiteOpenHelper (1037): android.database.sqlite.SQLiteException: near ";": синтаксическая ошибка: инвентаризация CREATE TABLE (категория TEXT, itemNum TEXT, количество INTEGER, цена REAL, изображение INTEGER, CONSTRAINT unq UNIQUE (категория, itemNum) В случае конфликта;
EDIT:
... заполните Значения ContentValues с пользовательским вводом.
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();
}