关于UniDAC连接加密SQLite错误“file is encrypted or is not database”解决方法

环境:Delphi 2010,UniDAC.v4.0.1

 

今天使用SQLite Developer 3.8.0.492新建并加密了一个数据库,但是在D2010中使用UniDAC控件却无法连接数据库,一直弹出“file is encrypted or is not database”的错误,后来才发现原因出在Sqlite3.dll的版本上。

 

先说一下连接SQLite的具体配置:

在窗体中依次拖入UniConnection、UniQuery、SQLiteUniProvider控件,在UniConnection->Options->ClientLibrary中指定所使用的SQLite3.dll文件,UniConnection->Options->EncryptionKey设置数据库密码,UniQuery->Connection设为UniConnection。

SQLite3.dll是使用wxSQLite3的加密版,然后问题就来了,后来换了好几个SQLite3.dll的加密版都不行,最后才怀疑到SQLite Developer上。因为SQLite Developer使用的SQLite3.dll版本与我给UniDAC指定的SQLite3.dl版本不一致,所以造成UniDAC无法读取用SQLite Developer加密的数据库,解决方法是用wxSQLite3的加密版替换SQLite Developer目录下的SQLite3.dll,或反之亦可。

 

总之,重点就是:确保创建、加密SQLite数据库所使用的SQLite3.dll与查询数据库所使用的SQLite3.dll文件保持一致。

你可能感兴趣的:(database)