delphi DISQLite3使用例子
2016-06-25 10:18
543 查看
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.
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.
相关文章推荐
- 派生类地址比基类地址少4(子类与基类指针强行转换的时候,值居然会发生变化,不知道Delphi BCB是不是也这样) good
- delphi 读取编译的version信息
- Delphi常用操作说明
- Delphi XE不生成__history目录
- Delphi的对象注销方法Destroy和free的区别
- 问题-Delphi7中JSON遍历节点不支持使用IN处理方法?
- 理解windows消息机制-delphi消息机制学习笔记。
- delphi启动外部程序执行结束
- delphi datasnap 心跳包
- delphi之IOCP学习(一)
- Delphi中window消息截获的实现方式(2)
- Delphi中window消息截获的实现方式(1)
- Delphi Dll 消息处理
- Delphi中StrToDateTime函数TFormatSettings参数的使用
- Delphi XE6 利用FastMM4检测内存泄漏
- delphi 判断WIN8 , WIN8.1 , WIN10 系统版本
- Delphi 文件夹遍历所有文件包括子文件文件,并可通过后缀过滤
- Delphi 类型转换函数(有几个函数没见过,FloatToStrF,FloatToText等等)
- Delphi 常用属性说明(超长)
- Delphi程序自删除的几种方法