2011-06-14 60 views
24

我正在創建一個使用SQL數據庫存儲數據的應用程序。應用程序的設計方式會根據用戶在應用程序運行時的行爲,每3分鐘更新一次新數據。我是否應該不斷打開()並關閉()我的SQL數據庫或將其保持打開狀態?

在我看到的教程中,他們建議您在更改數據庫後關閉數據庫(在資源方面它是一個「昂貴的」)。

在我的應用程序的持續時間內保持打開狀態會更好嗎,因爲它是在相當頻繁的基礎上更新,還是應該在每次更改後立即運行close()方法?

我想我擔心的是,打開它並不斷關閉它會吸引更多的資源,而不會讓它整個打開。

回答

5

我試圖離開打開的連接,一次 - 我用它的東西中繼器或東西 - 不記得現在。

在程序的後面,我有另一個需要使用連接 - 我想我已經這樣做,以便當用戶點擊轉發器中的父項時,將會彈出一個詳細div,並提供該項的更多信息。這產生了一個錯誤 - 對'無法打開()打開連接'的影響。

我認爲這個錯誤可能是以另一種方式避免的(比如檢查我試圖打開的連接是否已經打開),但正如我想到的那樣,我意識到我必須使這個標準在整個我的應用程序中練習,這似乎是太多的工作,所以我只是在每次使用後總是關閉連接的標準做法。

連接停留在連接池 - 我不是那種專家 - 但如果對性能感到好奇,我想我會牢記這一點,就開放連接多次所需的費用而言 - 無論你的情況如何,無論如何。

另一個想法是,您的數據庫管理員可能能夠強制關閉所有打開的連接,或者數據庫可能因其他原因關閉。如果你不是dba,那麼你可以考慮風險/好處,取決於你沒有長期控制的東西,例如保持連接的開放。

+0

DBA?我們還在談論Android嗎? – LarsH 2017-02-07 21:05:35

+0

數據庫管理員 – papiro 2017-03-01 16:15:45

3

三分鐘就是今天的處理器,甚至是手機處理器的永恆。我會關閉它並每次打開它。 「以太」可能會讓把手掛在外面。

+0

upvote for三分鐘在今天的處理器上是永恆的 – 2014-12-30 06:48:46

1

如果你問我目前爲止關於android的所有內容,一般情況下最好在做出修改後關閉它。

我發現儘可能做到最好的做法是實際製作和註冊內容提供商。 它有它的價格,但我相信你比你付出更多。 您可以使用內容提供程序完成所有任務,android門戶上的記事本示例非常適合學習如何實現它。它負責數據庫同步和打開/關閉它。所以也許看看。

+0

這是通過創建一個dbHelper或dbAdapter完成的嗎? – easycheese 2011-06-14 08:00:18

+0

看看記事本教程,然後按照例子中的記事本項目。 http://developer.android.com/resources/tutorials/notepad/index.html – DArkO 2011-06-14 08:28:05

+0

它與sqlite helper實現(作爲一個適配器或只是一個簡單的數據庫,你將直接通過方法訪問)有點不同。我相信內容提供商是一個非常好的解決方案。在做了很多帶有數據庫和併發問題的項目之後,沒有關閉數據庫或運行到封閉的數據庫等等等等,以使用不同的設計模式來解決這些問題後,我仍然發現內容提供者是最好的解決方案,對我所做的所有應用程序來說遠遠不夠。儘管它有一個更大的開銷。 – DArkO 2011-06-14 08:31:42

3

比方說,您有幾個數據庫操作可以在單個線程中進行背靠背操作。我會保持DB開放來執行這些操作。但是在完成大量工作後關閉數據庫。

3

我認爲這個問題的答案還取決於訪問數據庫的應用程序的類型。

如果你重新查詢數據庫很多 在這種情況下,你可以保持數據庫打開。

是否有任何其他應用程序訪問相同的數據庫? 如果存在併發或阻塞問題的風險,在完成對數據庫的讀寫之後關閉數據庫可能是明智之舉。

看一看onthe以下網址

When to close db connection on android? Every time after your operation finished or after your app exit

感謝迪帕克

相關問題