0

我正在使用本地 SQLite 数据库(使用 Delphi XE4 Professional)创建 Firemonkey 桌面应用程序,但数据库无法正常工作。没有问题,当我将一些数据插入数据库时​​,但是当我尝试在我的数据库上执行一些其他 SQL 命令(特别是 DELETE 和 SELECT)时,我检索到消息“数据库已锁定”或类似“ '7'不是有效的整数值“。

在我的应用程序中,我使用了 TSQLConnection、TSQLQuery、TDataSetProvider 和 TClientDataSet 组件来连接到我的数据库。一切都连接到现有数据库,就像在这个视频http://www.youtube.com/watch?v=ljdo0yUNVmA中一样,唯一的区别是,我的数据库不是 InterBase,而是 SQLite。

从 cmd 使用 SQLite3.7.11 创建数据库

CREATE TABLE History ( 
  ID  INTEGER       PRIMARY KEY AUTOINCREMENT,
  Kod TEXT( 7 ));

CREATE TABLE Drogs ( 
  Kod    TEXT( 7 )   PRIMARY KEY,
  Naz    TEXT( 60 ),
  Dop    TEXT( 60 ),
  RegCis TEXT( 20 ),
  ATC    TEXT( 8 ),
  Hraz   TEXT( 1 ),
  Obch   TEXT( 1 ));

将数据库连接到我的应用程序后(如上所述),数据被插入到Drogs表中

sKod := quotedstr('1234567');
sNaz := quotedstr('Name');
sHraz := quotedstr('0');

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('INSERT INTO Drogs (Kod, Naz, Hraz) ');
SQLQuery1.SQL.Add('VALUES('+sKod+','+sNaz+','+sHraz+')');
SQLQuery1.ExecSQL;

这没有问题,但是这段代码

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * from Drogs');
SQLQuery1.Open;

给出错误信息,如

'7 ' is not a valid integer value

和代码

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('DELETE FROM Drogs WHERE Hraz = "0"');
SQLQuery1.ExecSQL;

“有时”给出错误信息

Database is locked

任何想法,为什么会发生这种情况?我没有选择...

4

1 回答 1

0

转到 SQLQuery1 并设置“Active = False”

于 2013-08-17T21:58:21.440 回答