【问题标题】:Conditional INSERT or UPDATE in SQLITE [duplicate]SQLITE中的条件插入或更新[重复]
【发布时间】:2014-02-02 05:07:00
【问题描述】:

请对 SQLITE 中的 INSERT 或 UPDATE 提供一些建议

我正在使用此代码
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO downloadedBook(bookID, courseID, bookName, bookPath, bookVersion, pageAmount, price, episode) VALUES (\"%@\",\"%@\", \"%@\", \"%@\", %f, %d,%f, \"%@\")",bookID,courseID,bookName,bookPath,bookVersion,pageAmount,price,episode];

对于插入,

还有这段代码

NSString *updateSQL = [NSString stringWithFormat: @"UPDATE downloadedBook SET bookID = \"%@\",courseID = \"%@\", bookName = \"%@\", bookPath = \"%@\", bookVersion = %f, pageAmount = %d, price = %f,episode = \"%@\" WHERE bookID = \"%@\"" , bookID,courseID,bookName,bookPath,bookVersion, pageAmount, price, episode,bookID];

更新。

它工作正常。现在,我如何在执行这些操作时使用if 条件?例如我想检查“如果我有这个,数据会更新”请指教。

我该怎么做请指导我。

【问题讨论】:

  • 第一个建议是使用“准备好的语句”来防止 SQL 注入:xkcd.com/327
  • 感谢老师@MartinR

标签: ios sqlite


【解决方案1】:
  1. 确保表有一些唯一的约束,例如bookID INTEGER PRIMARY KEY

  2. INSERT OR REPLACE INTO ... 与您拥有的插入语法一起使用。如果插入会导致违反约束(例如bookID 已存在),则首先删除冲突的行,然后再插入数据。

还可以考虑为文字使用准备好的语句和 ? 占位符,以防止 SQL 语法问题和注入攻击,并提高性能。

【讨论】:

  • 非常感谢 bookID INTEGER PRIMARY KEY@laalto 老师我错了
猜你喜欢
  • 2013-04-05
  • 2011-02-12
  • 1970-01-01
  • 2012-10-29
  • 2013-02-23
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2015-03-01
相关资源
最近更新 更多