我正在使用c ++构建器编写Windows VCL桌面。该应用程序使用Firedac和SQLite数据库。
我要保护此SQLite数据库:
到目前为止,我发现我能做的最简单的事情是加密,这样您就可以使任何没有正确密码的人都收到类似“ 此文件不是数据库的信息< / strong>”,如果他试图打开它。
是的,我们可以使用Embarcadero VCL,doc.使用TFDSQLiteSecurity组件以及以下几行来完成此操作:
FDSQLiteSecurity1->Password = "";/* we are protecting (encrypting) our uncyphered database*/
FDSQLiteSecurity1->ToPassword = 'newpassword';
FDSQLiteSecurity1->ChangePassword();
不幸的是,VCL Firedac应用程序无法连接到加密的sqlite数据库,因此必须先对其进行解密。
为了使事情正常进行,我的程序启动并解密数据库(删除密码),然后连接到数据库并使用它。完成后,我将再次加密数据库(在关闭应用程序时)。
问题: 在这段时间内(我的程序已启动并且正在运行,并且数据库处于未加密状态)我可以阻止其他程序打开SQLITE数据库吗?有没有更好的方法,我愿意提出任何建议
答案 0 :(得分:4)
一旦被FireDac加密,只需在FDConnection上设置适当的属性即可。密码是password
,加密方法是encrypt
。
Firedac可以打开一个已经加密的SQLite数据库,因此可以通过更好的方法解决此问题。其他程序只能看到磁盘上的加密版本,而没有密码就无法打开它。