SQLite实现加密
来源:互联网 发布:sql r2是什么 编辑:程序博客网 时间:2024/06/01 11:45
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;interfaceuses 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.
- SQLite实现加密
- SQLCipher实现ios平台sqlite数据库文件加密
- sqlite加密
- SQLite加密
- SQLite 加密
- SQLite加密
- SQLite加密
- SQLite加密
- SQLite加密
- sqlite加密
- sqlite 加密。
- SQLite加密
- SQLite加密
- Sqlite加密
- XXTEA加密算法为SQLite 3.3.17实现加密功能
- XXTEA加密算法为SQLite 3.5.3实现加密功能
- 为跨平台数据库引擎 SQLite 实现加密扩展《转》
- 为跨平台数据库引擎 SQLite 实现加密扩展
- s2sh + extjs4 办公平台
- writting
- unix98 pty
- STM8家族成员
- Char 转 CString
- SQLite实现加密
- sqlalchemy 简单实例
- struts2使用action方式实现文件下载(支持中文文件名)
- c#4.0多线程的使用
- 如何为动态为SQL Server表添加字段
- Firefox os
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start com
- 单片机学习笔记--51单片机
- 设计模式六项原则