delphi mysql 加密_Delphi SQLite实现加密

SQLite3 4 Delphi:Delphi中操作SQLite库。项目主页:http://code.google.com/p/sv-utils/最新库下载:http://sv-utils.googlecode.com/files/SQLite3_4_Delphi_RC2.zip

wxsqlite:这是wxWidgets组件之一,我们用它来实现加密。下载地址: http://jaist.dl.sourceforge.net/project/wxcode/Components/wxSQLite3/wxsqlite3-3.0.3.zip

下载完上述两个文件后,分别取两个文件中的部分文件:

1,SQLite3 4 Delphi:取“SQLite\sv-utils\SQLite3\Source”目录下3个文件:“SQLite3.pas”、“SQLiteTable3.pas”、“sv.inc”,放到工程里,并     把“SQLite3.pas”、“SQLiteTable3.pas”这两个文件添加到工程里,在使用地方引入这两个单元。

2,wxsqlite:取“wxsqlite3-3.0.3\sqlite3\secure\aes128\dll\release”下的“sqlite3.dll”,放到程序运行目录中。

上面文件准备完毕后,就已经完成对数据库加密需要的全部文件了。

演示代码:

unit Unit1;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,

System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type

TForm2 = class(TForm)

logMemo: TMemo;

clearLogBtn: TButton;

Button2: TButton;

dbNameEdt: TEdit;

Label1: TLabel;

passwordEdt: TEdit;

Label2: TLabel;

createTableBtn: TButton;

insertDataBtn: TButton;

deleteDataBtn: TButton;

selectDataBtn: TButton;

procedure clearLogBtnClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure createTableBtnClick(Sender: TObject);

procedure insertDataBtnClick(Sender: TObject);

procedure selectDataBtnClick(Sender: TObject);

procedure deleteDataBtnClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure MyLog(tempLog: string); // log方法

end;

var

Form2: TForm2;

logInfo: string; // log信息

implementation

{$R *.dfm}

uses SQLite3, SQLiteTable3;

procedure TForm2.Button2Click(Sender: TObject);

var

sldb: TSQLiteDatabase;

sltb: TSQLiteTable;

sSQL: String;

dbName: string; // 数据库名

password: string; // 密码

begin

dbName := trim(dbNameEdt.Text);

password := trim(passwordEdt.Text);

try

sltb := nil;

sldb := TSQLiteDatabase.Create(dbName, seUTF8, password);

sldb.ChangePassword(password);

MyLog('加密数据库创建完毕:数据库 = ' + dbName + ' ; 密码 = ' + password);

finally

sldb.Free;

if sltb <> nil then

begin

sltb.Free;

end;

end;

end;

procedure TForm2.clearLogBtnClick(Sender: TObject);

begin

logMemo.Clear;

end;

// 创建表

procedure TForm2.createTableBtnClick(Sender: TObject);

var

sldb: TSQLiteDatabase;

sltb: TSQLiteTable;

sSQL: String;

dbName: string; // 数据库名

password: string; // 密码

begin

dbName := trim(dbNameEdt.Text);

password := trim(passwordEdt.Text);

try

sltb := nil;

sldb := TSQLiteDatabase.Create(dbName, seUTF8, password);

sldb.ChangePassword(password);

sSQL := 'CREATE TABLE IF NOT EXISTS [test] (';

sSQL := sSQL + '[a] VARCHAR(100)  NULL,';

sSQL := sSQL + '[b] VARCHAR(100)  NULL';

sSQL := sSQL + ')';

sldb.ExecSQL(sSQL);

MyLog('创建表: test');

finally

sldb.Free;

if sltb <> nil then

begin

sltb.Free;

end;

end;

end;

procedure TForm2.deleteDataBtnClick(Sender: TObject);

var

sldb: TSQLiteDatabase;

sltb: TSQLiteTable;

sSQL: String;

dbName: string; // 数据库名

password: string; // 密码

begin

dbName := trim(dbNameEdt.Text);

password := trim(passwordEdt.Text);

try

sltb := nil;

sldb := TSQLiteDatabase.Create(dbName, seUTF8, password);

sldb.ChangePassword(password);

sSQL := 'DELETE FROM [test] ';

sldb.ExecSQL(sSQL);

MyLog('删除数据完毕 ');

finally

sldb.Free;

if sltb <> nil then

begin

sltb.Free;

end;

end;

end;

// 添加数据

procedure TForm2.insertDataBtnClick(Sender: TObject);

var

sldb: TSQLiteDatabase;

sltb: TSQLiteTable;

sSQL: String;

dbName: string; // 数据库名

password: string; // 密码

i: integer;

maxCount: integer; // 添加数据最大数量

begin

dbName := trim(dbNameEdt.Text);

password := trim(passwordEdt.Text);

try

sltb := nil;

sldb := TSQLiteDatabase.Create(dbName, seUTF8, password);

sldb.ChangePassword(password);

maxCount := 9;

for i := 0 to maxCount do

begin

sSQL := 'INSERT INTO [test] VALUES (';

sSQL := sSQL + QuotedStr('a' + inttostr(i)) + ',';

sSQL := sSQL + QuotedStr('b' + inttostr(i));

sSQL := sSQL + ')';

sldb.ExecSQL(sSQL);

end;

MyLog('共添加: ' + inttostr(maxCount + 1) + ' 条数据');

finally

sldb.Free;

if sltb <> nil then

begin

sltb.Free;

end;

end;

end;

// log方法

procedure TForm2.MyLog(tempLog: string);

var

temp: string;

oldLog: string;

begin

if trim(tempLog) <> '' then

begin

oldLog := trim(logMemo.Text);

logMemo.Clear;

temp := FormatDateTime('yyyy-mm-dd hh:mm:ss', now) + ' ' + trim(tempLog);

if oldLog = '' then

begin

logMemo.Lines.Add(temp);

logMemo.Lines.Add('');

end

else

begin

logMemo.Lines.Add(temp);

logMemo.Lines.Add('');

logMemo.Lines.Add(oldLog);

end;

end;

end;

procedure TForm2.selectDataBtnClick(Sender: TObject);

var

sldb: TSQLiteDatabase;

sltb: TSQLiteTable;

sSQL: String;

dbName: string; // 数据库名

password: string; // 密码

totalCount: integer;

temp: string;

begin

dbName := trim(dbNameEdt.Text);

password := trim(passwordEdt.Text);

try

sltb := nil;

sldb := TSQLiteDatabase.Create(dbName, seUTF8, password);

sldb.ChangePassword(password);

sSQL := 'SELECT * FROM [test] ';

sltb := sldb.GetTable(sSQL);

// 1,显示总数据条数

totalCount := 0;

if not sltb.EOF then

begin

totalCount := sltb.Count;

end;

MyLog('共: ' + inttostr(totalCount) + ' 条数据');

// 2,显示详细信息

temp := '';

while not sltb.EOF do

begin

if temp = '' then

begin

temp := #13#10 + sltb.FieldValByNameAsString['a'] + ' ; ' +

sltb.FieldValByNameAsString['b'] + #13#10;

end

else

begin

temp := temp + sltb.FieldValByNameAsString['a'] + ' ; ' +

sltb.FieldValByNameAsString['b'] + #13#10;

end;

sltb.Next;

end;

if temp <> '' then

begin

MyLog('详细数据:' + #13#10 + temp);

end;

finally

sldb.Free;

if sltb <> nil then

begin

sltb.Free;

end;

end;

end;

end.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值