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






你可能感兴趣的:(Delphi,DISQLite)