如果记录不存在,则插入Android SQLite记录

4
我想向sqlite表中添加一个新项目(奶酪),但前提是它不存在。 表中仅有两列:_id(KEY_ROWID_PR)和product_name(KEY_NAME_PR)。
我一直在尝试以下代码,但是它会给出一个错误:
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: 没有列: Cheese: 在PR_Dairy_Products表中插入(product_name)数据,如果(product_name)值不存在则进行插入,否则不执行。其中SELECT * FROM (SELECT Cheese) WHERE NOT EXISTS (SELECT product_name FROM PR_Dairy_Products WHERE product_name = Cheese) LIMIT 1;是指通过Cheese的值来作为(product_name)的值来插入表PR_Dairy_Products中。这段代码来源于:MySQL:如果表中不存在该记录,则插入记录。在代码中,no such column: Cheese的错误已经被更改为KEY_NAME_PR,但出现了一个新错误 no such column: product_name。这里需要注意,product_name这一列是存在的。
1个回答

3

我认为每当变量item出现时,您可能需要在其周围添加单引号,因为它是一个值而不是列名。尝试使用以下代码:

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;");
}

希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接