2011-10-27 21 views
0

こんにちは私のDB接続が開かれているが正しく閉じられていないというエラーを取り除くためにコードをクリーンアップしようとしています。Android DB接続とスコープに関するキャッチしよう

もし私がdb.open()を持っていれば、db queryのあとdb.close()のtry文をtry文の中で同じdb接続を使用するか、離散的に実行しますDB接続が利用できないようにcatch文を試してください。

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 
} 

私は考えているだろうと開口部1デシベル接続の最初のソリューションは良い方です要するに

は、私は、コードのようなものを持っている必要があります。しかし、私は問題をDB接続を終了しないで実行していると私は、私の設計に根本的な問題があると考えている時点です。

また、onResume()で接続を開いてから、onPause()を閉じても問題は解決しました。

答えて

0

私のアプリでは、私は主に以下のテンプレートを使用して、できるだけ早くあなたはデータを選択したDB接続をクローズする勧告があります:

db.open(); 
try { 
    // select data 
} finally { 
    db.close(); 
} 

それは私のために働きました。

+0

私は 'Finally'ステートメントに' db.close() 'を置くことを考えていました。私は 'try/catch'が実際に例外をキャッチすると、' db.close() 'は実行されませんが、最後に' db.close() 'が保証されていることに気づきました。私はしかし、質問があります:tryステートメントの前にdb.open()を持つ方が良いと思いますか?アドバイスありがとうございます – wired00

+0

私はdb.openを試す前に置いていますが、例外が発生する可能性があります。そして、try - finallyの中に置くと、db.openは例外を発生させ、finallyブロックのdb.closeも元のマスクをマスクする例外( "DB not open"のようなもの)を発生させます。 – slkorolev

+0

ありがとうございます。これを今実装するだけで、どのようにして – wired00

関連する問題