我使用Delphi(Firedac)在SQLite中遇到了一個對我來說無法解決的ATTACH和DETACH問題。使用SQLite的錯誤ATTACH - Delphi中的DETACH
我有連接的一個數據庫文件和附加的第二個具有:
FDConnection1.ExecSQL('ATTACH DATABASE "' + Import_DB_filename + '" AS IMPORTDB;');
其中,變量「Import_DB_filename」包含數據庫文件的完整路徑和文件名。
這工作正常,我可以通過FireDac查詢訪問連接中的兩個數據庫,並且可以毫無問題地完成我的編碼。 然而,事情出錯時拆下:
FDConnection1.ExecSQL('DETACH DATABASE IMPORTDB;');
在調試模式下,我總是得到錯誤:
Debugger Exception Notification
E Project My_Program.EXE raised exception class $C0000005 with message 'access violation at 0x00405d7b: read of address 0x00000000'.
顯然出了差錯與內存分配,因爲調試器中(裝配停止)功能SysFreeMem(P:Pointer): Integer;
在GETMEM.INC
。
無論我嘗試什麼,錯誤都會持續存在,並會導致內存泄漏,最終導致編譯器(Delphi Seattle Enterprise)崩潰。
即使連接並隨後分離數據庫而不傳遞任何代碼也會導致相同的錯誤。
(FDconnection:鎖定模式= lmNormal; JournalMode = jmOff或jmWALL或jmdelete)
我真希望你能幫助我在這持久的問題。
可以肯定的:所以你已經有一個正確的[Firedac連接建立(http://docwiki.embarcadero.com/RADStudio/XE8/en/Setting_up_Connections_% 28FireDAC%29),現在你想使用[SQLite ATTACH](https://www.sqlite.org/lang_attach.html)將另一個數據庫文件添加到當前連接?並請[編輯]你的問題,包括德爾福版本。 –
爲什麼您需要對兩個數據庫文件使用相同的FDConnection?爲什麼不爲每個人建立一個單獨的連接。 – MartynA
說實話,我不知道我是否已經嘗試過。我會查一下。感謝您的建議。 – JGMS