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還算簡單,基於用法就這些。