主要就是设置 TFDConnection 的两个链接参数: Password, NewPassword, 非常简单.


const
dbPath = 'C:\Temp\SQLiteTest.sdb'; {建立加密数据库, 密码是 mm123}
procedure TForm1.FormCreate(Sender: TObject);
const
strTable = 'CREATE TABLE MyTable(Id integer, Name string(10), Age byte)'; //Id, Name, Age 三个字段
begin
if FileExists(dbPath) then DeleteFile(dbPath); FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database=' + dbPath);
FDConnection1.Params.Add('Password=mm123'); //相同与 Password=aes-256:mm123; aes-256 是默认的加密算法;
//还有: aes-128,aes-192,aes-256, aes-ctr-128,aes-ctr-192,aes-ctr-256, aes-ecb-128,aes-ecb-192,aes-ecb-256
//建表并输入测试数据
FDConnection1.ExecSQL(strTable);
FDConnection1.ExecSQL('INSERT INTO MyTable(Id, Name, Age) VALUES(:1, :2, :3)', [1, 'abc', 23]);
end; {打开有密码的数据库}
procedure TForm1.Button1Click(Sender: TObject);
begin
FDConnection1.Params.Clear;
FDConnection1.Connected := False; FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database=' + dbPath);
FDConnection1.Params.Add('Password=mm123');
FDConnection1.Connected := True;
FDQuery1.Open('SELECT * FROM MyTable');
end; {修改密码}
procedure TForm1.Button2Click(Sender: TObject);
begin
FDConnection1.Params.Clear;
FDConnection1.Connected := False; FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database=' + dbPath);
FDConnection1.Params.Add('Password=mm123');
FDConnection1.Params.Add('NewPassword=mm12345'); //新密码, 密码为空表示取消密码
FDConnection1.Connected := True;
FDConnection1.Connected := False;
end;

FireDAC 还提供了一个专用的加密控件 TFDSQLiteSecurity, 因为上面的方法足够方便了, 所以用处不大.


FDSQLiteSecurity1.DriverLink := FDPhysSQLiteDriverLink1;  //TFDSQLiteSecurity 和 FireDAC.Phys.SQLite 里的其他四个控件, 使用前都要先指定这个属性
FDSQLiteSecurity1.Database := dbPath; //指定数据库路径
FDSQLiteSecurity1.Password := 'mm111'; //密码
FDSQLiteSecurity1.ToPassword := 'mm222'; //新密码
FDSQLiteSecurity1.SetPassword; //设置密码
FDSQLiteSecurity1.ChangePassword; //修改密码
FDSQLiteSecurity1.RemovePassword; //移除密码

帮助里面说: 通过 FireDAC 加密的 SQLite 与其它并不兼容.


FireDAC 下的 Sqlite [6] - 加密的更多相关文章

  1. FireDAC 下的 Sqlite [3] - 获取数据库的基本信息

    在空白窗体上添加: TFDConnection, TFDPhysSQLiteDriverLink, TFDGUIxWaitCursor, TMemo procedure TForm1.FormCrea ...

  2. FireDAC 下的 Sqlite [9] - 关于排序

    SQLite 内部是按二进制排序, 可以支持 ANSI; FrieDAC 通过 TFDSQLiteCollation 支持了 Unicode 排序, 并可通过其 OnCompare 事件自定义排序. ...

  3. FireDAC 下的 Sqlite [4] - 创建数据库

    建立数据库的代码: {建立内存数据库的一般代码:} begin FDConnection1.DriverName := 'SQLite'; //同 FDConnection1.Params.Add(' ...

  4. FireDAC 下的 Sqlite [2] - 第一个例子

    为了方便测试, 我把官方提供的 C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\data\FDDemo.sdb 复制了一份到 C:\ ...

  5. FireDAC 下的 Sqlite [1] - 前言

    很长时间没静下心来写博客了, 现在回来, 是 Delphi 不断地进步让我感动.振奋. Delphi XE5 并入了 FireDAC, 第一印象非常好, 恐怕 dbExpress 等等都要靠边站了. ...

  6. FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试

    可把下面代码直接贴在空白窗体上, 以快速完成窗体设计: object DBGrid1: TDBGrid Left = 0 Top = 0 Width = 265 Height = 338 Align ...

  7. FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索

    R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事! SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便 ...

  8. FireDAC 下的 Sqlite [8] - 自定义函数

    Sqlite 本身没有这个功能, FireDAC 通过 TFDSQLiteFunction 增加了该功能; 尽管通过某些 SQL 语句或通过视图也可以达到类似效果, 但函数会更灵活些. 本例先建了一个 ...

  9. FireDAC 下的 Sqlite [7] - 备份、优化、事务(Transaction)

    用 TFDSQLiteBackup 控件, 两三行代码即可完成 Sqlite 数据库的备份. procedure TForm1.Button1Click(Sender: TObject); begin ...

随机推荐

  1. js调试系列: 源码定位与调试[基础篇]

    js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 ...

  2. CSS的力量:用一个DIV画图

    这些图片都是用一个DIV绘制出来的,其实原理并不复杂. 这些图片都是由CSS绘制出来的,通过background-image叠加实现, 如蘑菇头的实现,通过 radial-gradient 径向渐变  ...

  3. 洛谷 P1603 斯诺登的密码

    我一开始还没看懂非正规数字的意义,以为那里写的单词不算,蒙了好久,而且这题非常考验仔细程度,一不小心就RE,WA. 嗯,好像讲了些废话,那我们看看思路,我的做法和前面的大佬们有些不同,因为这题只有六个 ...

  4. vb 中recordset提示对象关闭时不允许操作

    vb中执行查询后,一般要判断是否为空,只要执行的查询执行了select,都可以用rs.eof 或者 rs.recordcount来判断, 但是,如果执行的sql中加了逻辑判断,导致没有执行任何sele ...

  5. Javascript - 操作符

    操作符(Operator) void 如果void后是数字,就返回NAN,否则返回Undefined. alert(void "hello");//跟的字符 print undef ...

  6. linux的内存文件系统tmpfs

    在centos系统上自带的内存文件系统.这个tmpfs是temporary file system的意思. 一. 使用命令 df -h 查看tmpfs是否正在运行. Filesystem Size U ...

  7. 理解 Memory barrier(内存屏障)【转】

    转自:http://name5566.com/4535.html 参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://en.wikiped ...

  8. [HNOI2007]梦幻岛宝珠 「套路:分层 $DP$」

    显然直接 \(01\) 背包会超时并且超空间 套路:分层 \(DP\) 「考虑将每个子结构看作一层(也就是包含了不止 \(1\) 个物品的信息),并且大层不会对小层造成影响,可以考虑先进行每一层的自我 ...

  9. 浅谈js设计模式 — 享元模式

    享元(flyweight)模式是一种用于性能优化的模式,“fly”在这里是苍蝇的意思,意为蝇量级.享元模式的核心是运用共享技术来有效支持大量细粒度的对象. 假设有个内衣工厂,目前的产品有 50种男式内 ...

  10. SQLServer 的case when语句使用实现统计

    已知有表game_info 如下 date_info result_info 2018-2-4 win 2018-2-4 lose 2018-2-4 win 2018-2-4 lose 2018-2- ...