- unit main;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Menus, ComCtrls, StdCtrls, DB, DISQLite3DataSet, DISQLite3Database,
- DISQLite3Cache, DISQLite3Api;
- type
- TForm5 = class(TForm)
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- ListView_keydogs: TListView;
- Memo_log: TMemo;
- StatusBar1: TStatusBar;
- Button1: TButton;
- Button2: TButton;
- PopupMenu_keydog: TPopupMenu;
- N3: TMenuItem;
- N4: TMenuItem;
- sqlite3Database1: TDISQLite3Database;
- sqlite3UniDirQuery1: TDISQLite3UniDirQuery;
- procedure N2Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- PTKeyDog = ^TKeyDog;
- TKeyDog = record
- id: Integer;
- projectname: string;
- city: string;
- letter: string;
- hash: string;
- code: string;
- end;
- var
- Form5: TForm5;
- implementation
- {$R *.dfm}
- procedure TForm5.Button2Click(Sender: TObject);
- var
- dbname: string;
- stmt: TDISQLite3Statement;
- pkeydog: PTKeyDog;
- list: TList;
- count: Integer;
- i: Integer;
- arrs: TArray<TKeyDog>;
- begin
- // http://www.yunqa.de/delphi/doku.php/wiki/sqlite3/sqlite3_get_table
- // demo http://www.yunqa.de/delphi/doku.php/wiki/sqlite3/disqlite3_blobs_and_streams
- // http://www.yunqa.de/delphi/doku.php/wiki/sqlite3/index?do=index
- dbname := 'keydog.db';
- sqlite3Database1.DatabaseName := dbname;
- // sqlite3Database1.Password := 'jp123456';
- if FileExists(dbname) then
- begin
- DeleteFile(dbname);
- end;
- if FileExists(dbname) = False then
- begin
- sqlite3Database1.CreateDatabase;
- end;
- sqlite3Database1.Connected := True;
- sqlite3Database1.Open;
- sqlite3Database1.Execute(
- 'CREATE TABLE IF NOT EXISTS keydog(id INTEGER PRIMARY KEY AUTOINCREMENT,projectname TEXT, city TEXT,letter TEXT,hash TEXT,code TEXT); ');
- sqlite3Database1.Execute(
- 'INSERT INTO keydog(projectname, city,letter,hash,code) VALUES (''xx'', ''北京'', ''beijing'', ''xxxxxx'',''code''); ');
- sqlite3Database1.Execute(
- 'INSERT INTO keydog(projectname, city,letter,hash,code) VALUES (''xx'', ''上海'', ''shanghai'', ''xxxxxx'',''code''); ');
- stmt := sqlite3Database1.Prepare(
- 'INSERT INTO keydog(projectname, city,letter,hash,code) VALUES (?, ?, ?, ?, ? ); ');
- try
- stmt.Bind_Str(1, 'xxx');
- stmt.Bind_Str(2, '广州');
- stmt.Bind_Str(3, 'guangzhou');
- stmt.Bind_Str(4, 'fuck');
- stmt.Bind_Str(5, 'code');
- stmt.Step;
- finally
- stmt.Free;
- end;
- stmt := sqlite3Database1.Prepare('select * from keydog;');
- count := 0;
- list := TList.Create;
- try
- while stmt.Step = SQLITE_ROW do
- begin
- New(pkeydog);
- pkeydog.id := stmt.Column_Int64(0);
- pkeydog.projectname := string(stmt.Column_Str(1));
- pkeydog.city := string(stmt.Column_Str(2));
- pkeydog.letter := string(stmt.Column_Str(3));
- pkeydog.hash := string(stmt.Column_Str(4));
- pkeydog.code := string(stmt.Column_Str(5));
- list.Add(pkeydog);
- Inc(count);
- // ShowMessage(keydog.code);
- end;
- finally
- stmt.Free;
- end;
- ShowMessage(IntToStr(count));
- for i := 0 to list.count - 1 do
- begin
- pkeydog := list.Items[i];
- ShowMessage(pkeydog.projectname+pkeydog.city+pkeydog.letter+pkeydog.hash+pkeydog.code);
- Dispose(pkeydog);
- end;
- list.Free;
- // sqlite3Database1.Open;
- // sqlite3Database1.Execute('');
- sqlite3Database1.Close;
- end;
- procedure TForm5.N2Click(Sender: TObject);
- begin
- Application.Terminate;
- end;
- end.
delphi DISQLite3使用例子
最新推荐文章于 2020-02-07 23:58:43 发布