瀏覽代碼

* Patch from Reinier to test library loader for SQlite

git-svn-id: trunk@27343 -
michael 11 年之前
父節點
當前提交
48a7259ec3
共有 2 個文件被更改,包括 61 次插入0 次删除
  1. 1 0
      .gitattributes
  2. 60 0
      packages/fcl-db/examples/sqlite3loadlib.lpr

+ 1 - 0
.gitattributes

@@ -1988,6 +1988,7 @@ packages/fcl-db/examples/fbeventstest.pp svneol=native#text/plain
 packages/fcl-db/examples/loadlibdemo.lpi svneol=native#text/plain
 packages/fcl-db/examples/loadlibdemo.pp svneol=native#text/plain
 packages/fcl-db/examples/pqeventstest.pp svneol=native#text/plain
+packages/fcl-db/examples/sqlite3loadlib.lpr svneol=native#text/plain
 packages/fcl-db/fpmake.pp svneol=native#text/plain
 packages/fcl-db/src/Dataset.txt svneol=native#text/plain
 packages/fcl-db/src/README.txt svneol=native#text/plain

+ 60 - 0
packages/fcl-db/examples/sqlite3loadlib.lpr

@@ -0,0 +1,60 @@
+program sqlite3loadlib;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Classes, sysutils,
+  sqldb,
+  sqldblib, sqlite3conn;
+
+var
+  LibLoader: TSQLDBLibraryLoader;
+  Conn: TSQlite3Connection;
+  Tran: TSQLTransaction;
+  Q: TSQLQuery;
+  Existed: boolean;
+begin
+  LibLoader:=TSQLDBLibraryLoader.Create(nil);
+  try
+    LibLoader.ConnectionType:='SQLite3';
+    LibLoader.LibraryName:='d:\auxinst\sqlite\sqlite3.dll';
+    LibLoader.Enabled := true;
+    LibLoader.LoadLibrary;
+  finally
+    LibLoader.Free;
+  end;
+
+  Conn:=TSQlite3Connection.create(nil);
+  try
+    Tran:=TSQLTransaction.create(nil);
+    Q:=TSQLQuery.Create(nil);
+    Conn.DatabaseName:='test.sqlite';
+    existed:=fileexists(conn.databasename);
+    Conn.Transaction:=Tran;
+    Q.DataBase:=Conn;
+    Conn.Open;
+    Tran.StartTransaction;
+    if not(existed) then
+    begin
+      // create test table
+      Conn.ExecuteDirect('create table test (id integer, name varchar(255))');
+    end;
+    Q.SQL.Text:='select id,name from test ';
+    Q.Open;
+    Q.Last; //force recordcount update
+    writeln('recordcount: '+inttostr(q.RecordCount));
+    Tran.Commit;
+    Q.Close;
+    Conn.Close;
+  finally
+    Q.Free;
+    Tran.Free;
+    Conn.Free;
+    //LibLoader.Free;
+  end;
+  writeln('Program complete. Press a key to continue.');
+  readln;
+end.