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还算简单,基于用法就这些。