Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sqlite插入记录(如果不存在)_Android_Sqlite - Fatal编程技术网

Android sqlite插入记录(如果不存在)

Android sqlite插入记录(如果不存在),android,sqlite,Android,Sqlite,我想在sqlite表中添加一个新项目,但前提是它不存在。表中只有两列:_idkey\u ROWID\u PR和product\u name KEY\u name\u PR 我一直在尝试这些代码,但它给了我一个错误: public void populate_base_lists2(String tablename, String item) { ourDatabase.execSQL("INSERT INTO " + tablename + " (" + KEY_NAME_PR

我想在sqlite表中添加一个新项目,但前提是它不存在。表中只有两列:_idkey\u ROWID\u PR和product\u name KEY\u name\u 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/AndroidRuntime658:由以下原因引起: android.database.sqlite.SQLiteException:没有这样的列:Cheese: 在PR_乳制品产品名称中插入SELECT*FROM SELECT 不存在的奶酪从PR_Dairy_Products中选择产品名称 其中,产品名称=奶酪限值1

代码如下所示:

没有这样的列:Cheese,好吧,我把那个部分改成KEY_NAME_PR,然后错误是一样的,但是没有这样的列:product_NAME。那个专栏肯定存在

更重要的是,我需要一些关于这段代码的解释。我有一定程度的sql知识,但我不能做到这一点


谢谢

我认为无论变量项何时出现,您可能需要在其周围加上单引号,因为它是一个值而不是列名。 请尝试以下代码:

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;");
}
希望有帮助