【问题标题】:XOJO delete a record from SQLite databaseXOJO 从 SQLite 数据库中删除一条记录
【发布时间】:2013-07-09 18:27:42
【问题描述】:

我正在使用 Xojo 2013 版本 1。我正在尝试从 SQLite 数据库中删除一条记录。但我失败得很惨。它没有删除记录,而是出于某种原因复制了它。

这是我使用的代码:

command = "DELETE * from names where ID = 10"

namesDB.SQLExecute(command)

我正在动态生成命令。但是我改变它总是一样的。带引号或不带引号的结果相同。

有什么想法吗?

【问题讨论】:

  • 你试过删除*吗?
  • 是的,我有。结果相同
  • 你有没有弄清楚问题是什么?
  • 不,不幸的是同样的结果。我的代码没问题,毫无疑问。这里还有其他东西在起作用......

标签: sqlite realbasic xojo


【解决方案1】:

我要做的第一件事就是检查是否产生了错误。

if namesDB.Error then
  dim s as string = namesDB.errorMessage
  msgbox s
  return
end

它会告诉您是否存在数据库错误以及错误是什么。如果没有错误,则问题出在其他地方。

FWIW,总是,总是,总是在每次 db 操作后检查错误位。与其他语言不同,如果出现数据库错误,Xojo 不会生成/抛出异常,因此您可以自行检查。

【讨论】:

    【解决方案2】:

    尝试调用 Commit()。

    我刚刚制作了一个带有“名称”表的示例 SQLite 数据库,这段代码运行良好:

    db.SQLExecute("Delete from names where ID=2")
    db.Commit
    

    我在 XOJO 和 SQLite 方面做了很多工作,它们一起工作得很好。在您报告时,我从未见过错误复制的记录。这很奇怪。如果这没有帮助,请发布更多代码。例如,我假设您的“命令”变量是一个字符串,但也许它是一个 Variant 等。

    【讨论】:

    • 我花了很多时间和时间,结果都一样。这正是发生的事情。假设我有 ID = 3,然后我删除它......它消失了,但是在位置 4 上创建了新记录(具有相同数据),并且三个消失了。我已经对命令字符串进行了硬编码...动态转换它...由于某种原因相同。
    【解决方案3】:

    我认为在 SQLite 上,DELETEFROM 之间不需要 *。

    【讨论】:

      猜你喜欢
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多