FMX桌面应用程序与本地SQL数据库。数据库无法正常工作

时间:2013-07-18 18:09:25

标签: sql database delphi local firemonkey

我正在使用本地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

任何想法,为什么会这样?我没有选择......

1 个答案:

答案 0 :(得分:0)

转到SQLQuery1并设置“Active = False”