delphi DISQLite3使用例子

  1. unit main;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, Menus, ComCtrls, StdCtrls, DB, DISQLite3DataSet, DISQLite3Database,  
  8.   DISQLite3Cache, DISQLite3Api;  
  9.   
  10. type  
  11.   TForm5 = class(TForm)  
  12.     MainMenu1: TMainMenu;  
  13.     N1: TMenuItem;  
  14.     N2: TMenuItem;  
  15.     ListView_keydogs: TListView;  
  16.     Memo_log: TMemo;  
  17.     StatusBar1: TStatusBar;  
  18.     Button1: TButton;  
  19.     Button2: TButton;  
  20.     PopupMenu_keydog: TPopupMenu;  
  21.     N3: TMenuItem;  
  22.     N4: TMenuItem;  
  23.     sqlite3Database1: TDISQLite3Database;  
  24.     sqlite3UniDirQuery1: TDISQLite3UniDirQuery;  
  25.     procedure N2Click(Sender: TObject);  
  26.     procedure Button2Click(Sender: TObject);  
  27.   private  
  28.     { Private declarations }  
  29.   public  
  30.     { Public declarations }  
  31.   end;  
  32.   
  33.   PTKeyDog = ^TKeyDog;  
  34.   
  35.   TKeyDog = record  
  36.     id: Integer;  
  37.     projectname: string;  
  38.     city: string;  
  39.     letter: string;  
  40.     hash: string;  
  41.     code: string;  
  42.   end;  
  43.   
  44. var  
  45.   Form5: TForm5;  
  46.   
  47. implementation  
  48.   
  49. {$R *.dfm}  
  50.   
  51. procedure TForm5.Button2Click(Sender: TObject);  
  52. var  
  53.   dbname: string;  
  54.   stmt: TDISQLite3Statement;  
  55.   pkeydog: PTKeyDog;  
  56.   list: TList;  
  57.   count: Integer;  
  58.   i: Integer;  
  59.   arrs: TArray<TKeyDog>;  
  60.   
  61. begin  
  62.   // http://www.yunqa.de/delphi/doku.php/wiki/sqlite3/sqlite3_get_table  
  63.   // demo  http://www.yunqa.de/delphi/doku.php/wiki/sqlite3/disqlite3_blobs_and_streams  
  64.   // http://www.yunqa.de/delphi/doku.php/wiki/sqlite3/index?do=index  
  65.   dbname := 'keydog.db';  
  66.   
  67.   sqlite3Database1.DatabaseName := dbname;  
  68.   // sqlite3Database1.Password := 'jp123456';  
  69.   
  70.   if FileExists(dbname) then  
  71.   begin  
  72.     DeleteFile(dbname);  
  73.   end;  
  74.   
  75.   if FileExists(dbname) = False then  
  76.   begin  
  77.     sqlite3Database1.CreateDatabase;  
  78.   end;  
  79.   sqlite3Database1.Connected := True;  
  80.   sqlite3Database1.Open;  
  81.   sqlite3Database1.Execute(  
  82.     'CREATE TABLE IF NOT EXISTS keydog(id INTEGER PRIMARY KEY AUTOINCREMENT,projectname TEXT, city TEXT,letter TEXT,hash TEXT,code TEXT); ');  
  83.   
  84.   sqlite3Database1.Execute(  
  85.     'INSERT INTO keydog(projectname, city,letter,hash,code) VALUES (''xx'', ''北京'', ''beijing'', ''xxxxxx'',''code''); ');  
  86.   
  87.   sqlite3Database1.Execute(  
  88.     'INSERT INTO keydog(projectname, city,letter,hash,code) VALUES (''xx'', ''上海'', ''shanghai'', ''xxxxxx'',''code''); ');  
  89.   
  90.   stmt := sqlite3Database1.Prepare(  
  91.     'INSERT INTO keydog(projectname, city,letter,hash,code) VALUES (?, ?, ?, ?, ? ); ');  
  92.   try  
  93.     stmt.Bind_Str(1'xxx');  
  94.     stmt.Bind_Str(2'广州');  
  95.     stmt.Bind_Str(3'guangzhou');  
  96.     stmt.Bind_Str(4'fuck');  
  97.     stmt.Bind_Str(5'code');  
  98.     stmt.Step;  
  99.   finally  
  100.     stmt.Free;  
  101.   end;  
  102.   
  103.   stmt := sqlite3Database1.Prepare('select * from keydog;');  
  104.   count := 0;  
  105.   list := TList.Create;  
  106.   
  107.   try  
  108.     while stmt.Step = SQLITE_ROW do  
  109.     begin  
  110.       New(pkeydog);  
  111.       pkeydog.id := stmt.Column_Int64(0);  
  112.       pkeydog.projectname := string(stmt.Column_Str(1));  
  113.       pkeydog.city := string(stmt.Column_Str(2));  
  114.       pkeydog.letter := string(stmt.Column_Str(3));  
  115.       pkeydog.hash := string(stmt.Column_Str(4));  
  116.       pkeydog.code := string(stmt.Column_Str(5));  
  117.       list.Add(pkeydog);  
  118.   
  119.       Inc(count);  
  120.       // ShowMessage(keydog.code);  
  121.     end;  
  122.   finally  
  123.     stmt.Free;  
  124.   end;  
  125.   ShowMessage(IntToStr(count));  
  126.   
  127.   for i := 0 to list.count - 1 do  
  128.   begin  
  129.   
  130.     pkeydog := list.Items[i];  
  131.     ShowMessage(pkeydog.projectname+pkeydog.city+pkeydog.letter+pkeydog.hash+pkeydog.code);  
  132.     Dispose(pkeydog);  
  133.   end;  
  134.   list.Free;  
  135.   
  136.   // sqlite3Database1.Open;  
  137.   // sqlite3Database1.Execute('');  
  138.   sqlite3Database1.Close;  
  139.   
  140. end;  
  141.   
  142. procedure TForm5.N2Click(Sender: TObject);  
  143. begin  
  144.   Application.Terminate;  
  145. end;  
  146.   
  147. end.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值