Можете подсказать, в чем дело?
Использовать DataSet'ы и т. п. не буду, т. к. уже много написал с использованием функций из модуля sqlite3.
- Код: Выделить всё
procedure Run;
var
r : boolean;
begin
OpenDb;
r:=Test;
CloseDb;
end;
procedure OpenDb;
var
rc: integer;
begin
if UTF8Length(DBPath) > 4 then
begin
rc := sqlite3_open(PChar(DBPath), @sqlite);
if rc <> SQLITE_OK then
ShowMessage('error');
end;
end;
function Test : boolean;
var
rc : integer;
aSql, ErrMsg: ansistring;
stmt : Psqlite3_stmt;
begin
stmt := nil;
aSql := 'SELECT * FROM MyTable WHERE id=4;';
rc := sqlite3_prepare(sqlite, PChar(aSql), -1, stmt, @ErrMsg);
if rc <> SQLITE_OK then
begin
ShowMessage('Error');
exit;
end;
if (sqlite3_step(stmt)=SQLITE_ROW) then
begin
ShowMessage('Yes');
end
else
ShowMessage('No');
end;
procedure GetData;
var
rc: integer;
aSQL, ErrMsg: ansistring;
begin
aSql := 'BEGIN TRANSACTION; ';
aSql := aSql + 'SELECT * FROM Table2;';
aSql := aSql + 'COMMIT TRANSACTION;';
rc := sqlite3_exec(sqlite, PChar(ASql), @MyCallback, nil, @ErrMsg);
if rc <> SQLITE_OK then
ShowMessage('Select error');
end;
procedure CloseDb;
begin
sqlite3_close(sqlite);
end;