我有一個使用ODBC驅動程序的應用程序。按照這個小教程http://edn.embarcadero.com/article/25639或多或少的構建。Delphi應用程序和ODBC驅動程序 - 最佳實踐。加載大量數據並終止應用程序
我的問題是:比方說,我要求從數據庫通過查詢引入應用程序幾乎100K記錄。但是,在獲得結果之前,應用程序將被關閉(軟件設計不是由我制定的)。 ODBC驅動程序發生了什麼?它會凍結?驅動程序使用的內存會增加?如果存在,我應該如何處理這個「潛在的」問題?
我有一個使用ODBC驅動程序的應用程序。按照這個小教程http://edn.embarcadero.com/article/25639或多或少的構建。Delphi應用程序和ODBC驅動程序 - 最佳實踐。加載大量數據並終止應用程序
我的問題是:比方說,我要求從數據庫通過查詢引入應用程序幾乎100K記錄。但是,在獲得結果之前,應用程序將被關閉(軟件設計不是由我制定的)。 ODBC驅動程序發生了什麼?它會凍結?驅動程序使用的內存會增加?如果存在,我應該如何處理這個「潛在的」問題?
我不明白你問的問題是你遇到過的問題(凍結,增加內存),還是隻是你問的問題,而且無論如何答案可能取決於ODBC驅動程序和數據庫。如果您只是通過檢索大型結果集並調用SQLFreeStmt(SQL_CLOSE)的一半方法,那麼接下來會發生什麼取決於ODBC驅動程序和數據庫。某些ODBC驅動程序使用同步協議與數據庫進行通信,並且ODBC驅動程序可能無法通知數據庫它不再需要更多行 - 它們只是被髮送並且ODBC驅動程序不知道您是什麼要做的下一步,它將不得不讀取所有的數據,但扔掉它(這可能被視爲一個暫停,特別是當結果集很大時)。有些人可能會發送某種信號給數據庫,說停止發送行。
無論哪種方式,在應用程序關閉時結束內存使用不在這裏或那裏。在應用程序關閉時嘗試整理是一個很好的做法,但除非驅動程序創建了一些未正確清理的系統資源,否則這應該無關緊要。
我還沒有經歷過這樣的事情。只是想知道如果我在數據「移動」到應用程序的內存空間之前殺死應用程序會發生什麼。 – RBA 2011-12-19 16:07:53
我只是不明白它.. + 1,-1,-1 ..沒有答案,沒有給出-1的理由......奇怪的政策downvoting在SO! – RBA 2011-12-19 14:01:45
你得到-1票,因爲你的問題非常模糊。目前還不清楚你在問什麼;事實上,你甚至不清楚你想要做什麼或者你想要解決什麼問題。您可能需要進行編輯以改進對哪些內容無法正確使用的描述,以及您究竟在問什麼。此外,在外部網站上發佈代碼鏈接(即使它們是EDN網站)也沒有用處,因爲人們不想去別的地方試圖弄清楚問題可能在哪裏。在編輯時,您也可能會考慮這一點。 :) – 2011-12-19 14:38:56
最有可能的答案是閱讀您的特定ODBC驅動程序的技術細節。答案將是具體實現。 – 2011-12-19 14:44:49