SQLite数据库是一款轻量级数据库,而DISQLite则是针对于delphi的自管理,嵌入式和零配置的基于SQLite的SQL数据库引擎,它的特点及相关说明在http://www.yunqa.de/delphi/doku.php/products/sqlite3/index。
它的用法有三层:The Native Api, The Object Layer, The DataSet Layer。其中,The Native Api是最直接调用数据库引擎的方式,要引用The Native Api,你需要添加pas单元如下:
uses
DISQLite3API
这层调用代码最少,调用最快,适合于对时序要求严格的应用,当然相对于其它两层,相对来说有点难用。
要采用The Object Layer,则需要引用DISQLite3Database.pas单元。它相当于在The Native Api外边包了一层,提供两个类来操作数据库:TDISQLite3Database和TDISQLite3Statement。TDISQLite3Database它封装了一个DISQLite的句柄,并提供创建,打开和关闭数据库的功能,同时可以执行SQL语句生成一个Statement。TDISQLite3Statement提供绑定数据,执行语句和读取数据。通常被用来给数据库写入或读取数据,有点像数据库的游标。
T DataSetLayer这层没用过,暂时不写了。
由于刚开始学DISQLite,采用的是The Object Layer,相对来说容易一些,下面就简单介绍一下它的用法:
1)创建数据库
var
oDatabase: TDISQLite3Database;
begin
oDatabase := TDISQLite3Database.Create(nil);
oDatabase.DatabaseName := 'Test.db3';
oDatabase.CreateDatabase;
oDatabase.Open;
oDatabase.Close;
end;
2)打开数据库
oDatabase := TDISQLite3Database.Create(nil);
oDatabase.DatabaseName := 'Test.db3';
oDatabase.Open;
3)执行SQL语句
strSQL := 'Create Table Test(ID Integer Not null Primary key, Name Text)';
oDatabase.Execute16(strSQL);
4)读取数据
var
oStmt: TDISQLite3Statement;
nID: Integer;
strSQL, strName: string;
begin
strSQL := 'Select * From Test';
oStmt := FDataBase.Prepare16(strSQL);
try
//SQLITE_ROW表示后面还有数据行,没用时返回SQLITE_DONE
//需引用DISQLite3Api
while oStmt.Step = SQLITE_ROW do
begin
nID := oStmt.Column_Int(0); //列序号从0开始
strName := oStmt.Column_Str16(1); //返回值是UnicodeString
// strName := oStmt.Column_Str(1); //返回值是utf8String
end;
oStmt.Close;
finally
oStmt.Free;
end;
end;
5)绑定数据
var
oStmt: TDISQLite3Statement;
nID: Integer;
strSQL, strName: string;
I: Integer;
begin
strSQL := 'Insert Into Test (ID, Name) Values(:ID, :Name)';
oStmt := FDataBase.Prepare16(strSQL);
try
for I := 0 to 10 do
begin
oStmt.Open;
oStmt.Bind_Int(1, I);//需要注意的事,绑定数据序号是从1开始的
oStmt.Bind_Str16(2, 'Test');
oStmt.Step;
oStmt.Clear_Bindings;
oStmt.Reset;//重置状态
end;
finally
oStmt.Free;
end;
end;
个人感觉,操作DISQLite还算简单,基于用法就这些。