0
嗨我想清理我的代碼,以刪除錯誤,指出我的數據庫連接已打開,但沒有正確關閉。Android數據庫連接和嘗試捕捉有關範圍
如果我有一個db.open()然後幾個嘗試圍繞db查詢的catch語句,那麼在try catch後面的db.close()將使用try catch中的同一個db連接,或者java離散運行嘗試catch語句,以便db連接不可用。
總之,我應該有代碼是這樣的:
db.open();
try {
// here
db.getThings()
} catch() {
// there
}
try {
// here 2
db.getMoreThings()
} catch() {
// there 2
}
db.close();
或者這樣:
try {
// here
db.open();
db.getThings()
db.close();
} catch() {
// there
}
try {
// here 2
db.open();
db.getMoreThings()
db.close();
} catch() {
// there 2
}
我還以爲開一個數據庫連接的第一個解決方案是最好的一個。但是我遇到了不關閉數據庫連接的問題,並且我認爲這是我設計中的一個基本問題。
我也嘗試在onResume()中打開連接,然後在onPause()中關閉,但仍然有問題。
嗯我只是考慮把'db.close()'放在'Finally'語句中。我意識到,對於初學者來說,如果我的'try/catch'實際上捕捉到一個異常,那麼我的'db.close()'將不會運行,但最終它會保證'db.close()'。我有一個問題,但是:你認爲在try語句之前還是在INSIDE之前有更好的db.open()?感謝您的建議 – wired00
我嘗試之前先放入db.open,因爲它可能會引發一些異常。如果你把它放在裏面try - finally和db.open會觸發一個異常,那麼finally塊中的db.close也會觸發一個異常(類似「DB not open」),它會掩蓋原來的異常。 – slkorolev
謝謝。現在就執行這個程序,看看它是如何完美運作的 – wired00