我正在使用本地 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
任何想法,为什么会发生这种情况?我没有选择...