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、常に、常に、すべてのデータベース操作の後に常にエラービットをチェックしてください。他の言語とは異なり、Xojo はデータベース エラーが発生した場合に例外を生成/スローしないため、チェックするのはユーザー次第です。

于 2013-07-09T19:57:52.967 に答える
1

Commit() を呼び出してみてください。

「names」テーブルを使用してサンプルの SQLite データベースを作成したところ、このコードは正常に機能しました。

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

私は XOJO と SQLite で多くの作業を行ってきましたが、それらはうまく連携しています。あなたが報告したように、レコードが誤って複製されたのを見たことがありません。それは非常に奇妙です。これで問題が解決しない場合は、コードをさらに投稿してください。たとえば、「コマンド」変数は文字列であると想定していますが、バリアントなどである可能性があります.

于 2013-07-09T22:40:28.193 に答える