2011-08-24 50 views
2

我想UPDATE一排,其中key = LastSelected
如果與該鍵的行不存在,我想INSERT它。的Android SQLite的更新/插入

我可以得到UPDATE如果行已經存在的工作,但它不會INSERT如果它丟失了。

我嘗試了這些(第一個正確更新,但不會插入):

String.format("UPDATE table_1 SET value = '%s' WHERE key = 'LastSelected'", s); 

String.format("REPLACE table_1 SET value = '%s' WHERE key = 'LastSelected'", s); 

String.format("INSERT OR REPLACE INTO table_1 SET value = '%s' WHERE key = 'LastSelected'", s); 
+1

你應該看看中準備語句 - 通常,字符串插補'String.format'是準備SQL不安全的方法,因爲它是難以確保一切都妥善轉義,使SQL正確,並避免SQL注入。準備好的語句可以讓你在SQL中插入佔位符(通常是'?'),然後將值綁定到這些參數。一切都由SQL引擎處理,以確保數據編碼正確。 –

回答

3

的語法INSERT OR REPLACE INTO <table> (<columns>) VALUES (<values>),如可在the documentation可見。

在你的情況,這將是這樣的:

INSERT OR REPLACE INTO table_1 (key, value) 
VALUES ('LastSelected', '...') 
+2

使用INSERT或REPLACE,您必須記住要報告所有值。如果它發現列的某個空值,它將把默認值。 – StErMi