我正在使用本地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
任何想法,为什么会这样?我没有选择......
答案 0 :(得分:0)
转到SQLQuery1并设置“Active = False”