DISQLite基本用法

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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章