1

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

这是我使用的代码:

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

namesDB.SQLExecute(command)

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

有任何想法吗?

4

3 回答 3

2

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

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

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

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

于 2013-07-09T19:57:52.967 回答
1

尝试调用 Commit()。

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

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

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

于 2013-07-09T22:40:28.193 回答
0

我认为SQLite你不需要在DELETE和之间的* FROM

于 2013-07-19T08:20:45.887 回答