【发布时间】:2011-08-24 18:30:38
【问题描述】:
我想更新我的表中的一行,WHERE key = LastSelected
如果具有该键的行不存在,我想插入它。
如果该行已经存在,我可以让 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);
【问题讨论】:
-
您应该查看准备好的语句 - 通常,使用
String.format进行字符串插值是准备 SQL 的不安全方法,因为很难确保所有内容都正确转义以使 SQL 正确并避免SQL 注入。准备好的语句允许您在 SQL 中插入占位符(通常是“?”),然后将值绑定到这些参数。然后一切都由 SQL 引擎处理,以确保数据被正确编码。
标签: android sqlite insert replace