Android SQL IF/CASE/Update IF存在

Android SQL IF/CASE/Update IF存在,android,sql,if-statement,sql-update,case,Android,Sql,If Statement,Sql Update,Case,我对android Api有一个大问题。 我试图在SQL数据库中插入一些值,如果密钥已经存在,我想更新 正常情况下,SQL没有问题,但android是一个错误 我的代码: "IF EXISTS (SELECT * FROM "+table+" WHERE Name='"+key+"')" + " UPDATE "+table+" SET (Value='"+Value+"') WHERE Name='"+key+"'" + " ELSE" + " INSERT INTO Table1 (Name

我对android Api有一个大问题。 我试图在SQL数据库中插入一些值,如果密钥已经存在,我想更新

正常情况下,SQL没有问题,但android是一个错误

我的代码:

"IF EXISTS (SELECT * FROM "+table+" WHERE Name='"+key+"')" +
" UPDATE "+table+" SET (Value='"+Value+"') WHERE Name='"+key+"'" +
" ELSE" +
" INSERT INTO Table1 (Name,Value) VALUES ('"+key+"','"+Value+"')";
我得到的错误是:

09-19 19:56:46.311: E/AndroidRuntime(32454): Caused by:      
android.database.sqlite.SQLiteException: near "CASE": syntax error (code 1): , while compiling: CASE WHEN EXISTS (SELECT * FROM Settings WHERE Name='AppVersion')THEN UPDATE Settings SET (Value='0.5 beta') WHERE Name='AppVersion'ELSE INSERT INTO Table1 (Name,Value) VALUES ('AppVersion','0.5 beta')`
我也尝试过使用“CASE”,但它也不起作用

"CASE WHEN EXISTS (SELECT * FROM "+table+" WHERE Name='"+key+"')" +
"THEN UPDATE "+table+" SET (Value='"+Value+"') WHERE Name='"+key+"'" +
"ELSE INSERT INTO Table1 (Name,Value) VALUES ('"+key+"','"+Value+"')";
谁能告诉我它是怎么工作的吗

注:很抱歉英语不好。

SQLite(显然)不支持您尝试使用的语法

基本上有两种选择:

  • 将SQLite的“”语法与INSERT语句一起使用

    • 这需要一个唯一的约束(在本例中,在“名称”列上)
    • 请注意,这将首先删除旧行,然后插入新行。

  • 如果delete/insert对您来说是不可接受的,那么您可能必须首先尝试更新,获取更新计数,如果为零,则进行插入

您知道sqlite有REPLACE关键字吗?