You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TFDSQLiteSecurity修改密码疑问:已连接时无需验证原密码?

TFDSQLiteSecurity ChangePassword 旧密码验证问题解答

是的,必须先将TFDConnection::Connected设为false,再调用TFDSQLiteSecurity::ChangePassword()才能触发旧密码验证,这属于FireDAC针对SQLite的设计行为。

原因在于:当TFDConnection处于已连接状态时,SQLite数据库已经通过正确的旧密码完成解密并处于开放状态。此时FireDAC执行ChangePassword操作时,直接针对已打开的数据库文件修改密码,不会再次校验旧密码——毕竟连接阶段已经完成了身份验证,后续的密码变更操作默认信任当前连接的合法性。

文档中提到的“ChangePassword()方法需同时提供旧密码与新密码”,是针对未连接状态下的修改场景:此时数据库处于加密关闭状态,必须通过旧密码完成解密后,才能执行密码变更操作,因此旧密码的校验是强制的。

正确的密码修改流程(需验证旧密码时):

  • 先将TFDConnection::Connected设置为false
  • 给TFDSQLiteSecurity::OldPassword赋值原有效密码
  • 给TFDSQLiteSecurity::NewPassword赋值新密码
  • 调用TFDSQLiteSecurity::ChangePassword()
  • 后续重新连接数据库时使用新密码

内容的提问来源于stack exchange,提问作者user3161924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:32:36