環境: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文件保持一致。