2012-03-29 4 views
3

Я просмотрел несколько сайтов для любой полезной документации и подошел пустой. Блок-схемы с официального сайта также могут быть греческими, и примеры, которые я попытался сделать из других релевантных сообщений на этом сайте, вызвали у меня ошибки. Я пишу простое приложение для размещения пользовательского ввода в базе данных, однако мне нужна комбинация из двух столбцов , которая будет уникальной.. Из того, что я видел, это может быть достигнуто с помощью UNIQUE или PRIMARY KEY. Мне также нужен способ захвата ошибки Toast пользователю, что их вход неисправен. Я знаю, что я могу сделать это на стороне Java достаточно легко, но я бы предпочел не перебирать таблицу в каждой предлагаемой вставке.SQLite create table with UNIQUE комбинация столбцов

Это то, что я до сих пор:

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

таблица построена правильно, пока я не добавил UNIQUE ...

Который бросил: ERROR/SQLiteOpenHelper (1037): android.database.sqlite .SQLiteException: рядом ";": ошибка синтаксиса: CREATE TABLE инвентаризации (категория TEXT, itemNum TEXT, количество INTEGER, реальная цена, INTEGER изображения, скованность Unq UNIQUE (категория, itemNum) НА КОНФЛИКТ FAIL;

EDIT:

... fill 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();    
} 

ответ

2

У вас есть несогласованная скобка. Должно быть еще ) после FAIL.

После того как вы его отсортировали, вы можете поймать исключение, которое происходит, когда ограничение нарушено.

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! Теперь я возвращаю карту своего программиста и тихо отступаю, чтобы надуться в углу. – AnthonyW

+0

Любые мысли по второму вопросу? Мне также нужен способ захвата ошибки Toast пользователю, что их вход неисправен – AnthonyW

+0

Конечно, добавлен в мой ответ. –

Смежные вопросы