爲了替代我的previous question這是令人困惑和制定不良,這裏是「真正」的問題。使用Delphi和Firedac設置sqlite數據庫的相對路徑
我想知道如何使用Firedac在運行時設置位於應用程序文件夾子文件夾中的sqlite數據庫的相對路徑。
由於Jerry Dodge說:
任何應用程序不應該在同一個目錄依靠可寫數據反正。另外,即使你做了,也應該確保你的所有路徑至少與應用程序相關。
此刻,我記住的應用程序是可移植的,我希望數據庫文件存儲在主exe文件夾的子文件夾中。
在我的主要形式的Form.Create事件,可以使用第一
path := ExtractFilePath(Application.ExeName);
而且在那麼對於FDConnection:
with FDConnection1 do begin
Close;
with Params do begin
Clear;
Add('DriverID=SQLite');
Add('Database='+path+'Data\sqlite.db');
end;
Open;
end;
我不斷收到一個錯誤說「無法打開數據庫文件」。
我不想在FiredDac連接編輯器中設置數據庫文件的路徑,因爲那樣它就是絕對的並且綁定到我的機器上,對嗎?
如何將此路徑設置爲數據庫文件,以便在任何配置下工作,無論用戶放置應用程序文件夾?
謝謝大家提前
數學
確保你有'FDConnection1.DriverName:='SQLite'設置。即使您的數據庫文件不在Win32 \ debug \ Data文件夾中,也應該在調用FDConnection1.Open時創建它,這樣您將遇到另一個問題 - 如果您的用戶刪除了db文件並且打開了一個新的空白一? –
謝謝邁克爾抽空回答。是的,驅動程序已設置並且數據庫文件位於指定的文件夾中。抓住我的頭在這一個。 – Mathmathou
如果您重命名文件會發生什麼?是否創建了一個新的?如果是這樣,您嘗試打開的那個可能會損壞,或由於某種原因無法讀取FireDAC。如果沒有,則應用程序可能會遇到一些麻煩,無法寫入該路徑(該子文件夾必須存在,不會被創建)。 – Victoria