【问题标题】:android SQLite update/insertandroid SQLite 更新/插入
【发布时间】: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


【解决方案1】:

语法为INSERT OR REPLACE INTO <table> (<columns>) VALUES (<values>),如the documentation所示。

在你的情况下,它会是这样的:

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

【讨论】:

  • 使用 INSERT OR REPLACE 您必须记住报告所有值。如果它找到某个列的空值,它将放置默认值。
猜你喜欢
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多