2012-03-11 8 views
3

Я хочу добавить новый элемент (сыр) в таблицу sqlite, но только в том случае, если он не существует. У меня есть два столбца только в таблице: _id (KEY_ROWID_PR) и product_name (KEY_NAME_PR).Запись в sqlite Android, если не существует

Я пытался с этим кодом, но это дает мне ошибку:

public void populate_base_lists2(String tablename, String item) { 
     ourDatabase.execSQL("INSERT INTO " + tablename + " (" + KEY_NAME_PR + ") SELECT * FROM (SELECT " + item + ") WHERE NOT EXISTS (SELECT " + KEY_NAME_PR + " FROM " + tablename + " WHERE " + KEY_NAME_PR + " = " + item + ") LIMIT 1;"); 
} 

03-11 17:27:20.972: E/AndroidRuntime(658): Caused by: android.database.sqlite.SQLiteException: no such column: Cheese: INSERT INTO PR_Dairy_Products (product_name) SELECT * FROM (SELECT Cheese) WHERE NOT EXISTS (SELECT product_name FROM PR_Dairy_Products WHERE product_name = Cheese) LIMIT 1;

код не является здесь: MySQL: Insert record if not exists in table

нет такой колонки: сыр, хорошо, я изменил эту часть на KEY_NAME_PR, тогда ошибка была такой же, но без такого столбца: product_name. Эта колонка определенно существует.

Более того, мне нужно пояснить этот код. У меня есть знание sql на определенном уровне, но я не могу это получить.

Благодаря

ответ

2

Я думаю, что вам может понадобиться одиночные кавычки вокруг переменной пункта всякий раз, когда он появляется, поскольку это значение не имя столбца. Попробуйте этот код:

public void populate_base_lists2(String tablename, String item) { 
ourDatabase.execSQL("INSERT INTO " + tablename + 
" (" + KEY_NAME_PR + ") SELECT * FROM (SELECT '" + item + "') 
WHERE NOT EXISTS (
SELECT " + KEY_NAME_PR + 
" FROM " + tablename + " WHERE " + KEY_NAME_PR + " = '" + item + "' 
) LIMIT 1;"); 
} 

Надежда, что помогает.

+0

Спасибо, человек, я очень ценю это! Я был так близок :) – erdomester

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