主要就是设置 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 与其它并不兼容.
分类:
数据库编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2009-05-21 时间与字符串
2009-05-21 区域设置 ID (LCID) 表, 及获取方法
2009-05-21 Now、Date、Time、CurrentYear - 当前日期
2009-05-21 Yesterday、Today、Tomorrow - 昨天、今天、明天
2009-05-21 IsSameDay、IsToday - 判断是不是同一天、判断是不是今天
2009-05-21 DateUtils.IsPM - 判断时间是否是下午
2009-05-21 禁止用鼠标拖动窗口的大小 - 回复 "合肥的石头" 的问题