現在Androidのアプリを作成中で、そのアプリを起動時に内蔵のsqliteからデータを取ってくる際に
10~20回中に1回程度の割合でnullが返ってきてしまい、アプリが落ちてしまいます。
一般的にこんなに高頻度でnull、つまりデータの取得に失敗してしまうものでしょうか??
sqliteからデータを持ってこれなければ始まらないので、一度nullだった場合に、もう一度SELECTを試すようにしていますが,極たまにnullが返されてしまいます。
対処方法や、原因に心当たりがある方はいらっしゃいますか??
よろしくお願いします。
java
1 2// たまにこの子がnullを返してきます。 3// fileidは確実に存在しているのは確認しています 4retStr = sqlHelper.readArray("FILES", "filename", "WHERE fileid=\"" + fileid + "\" AND use=1 ORDER BY sortnum ASC"); 5 6 7 public String[] readArray(String tablename ,String filename,String wText) { 8 9 String sql = "SELECT "+filename+" FROM "+tablename+" "+wText+";"; 10 int numRows = 0; 11 String entries[] = null; 12 try { 13 SQLiteDatabase db = getReadableDatabase(); 14 Cursor c = db.rawQuery(sql, null); 15 numRows = c.getCount(); 16 if (numRows != 0) { 17 entries = new String[numRows]; 18 c.moveToFirst(); 19 for( int i = 0; i < numRows; i++ ) { 20 entries[i]=c.getString(0); 21 c.moveToNext(); 22 } 23 } else { } 24 c.close(); 25 db.close(); 26 } catch (Exception e) { 27 e.printStackTrace(); 28 } 29 30 return entries; 31 }
java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed.
と表示されていました。
現在このエラーについて調査しています。
また、この命令は起動時だけでなく、かなり高頻度で行っておりこちらも極たまに落ちてしまいます。
ここでsqlに保存されているimageファイルの名前をlistにして,指定のディレクトリから読み込む仕様です。
高頻度すぎて落ちてしまうのはなんとなく理解できるのですが,起動時に落ちてしまうのはおかしいなと思っています。
コードに問題がありそうでしたらご指摘いただけると嬉しいです。
よろしくお願いします!
回答1件
あなたの回答
tips
プレビュー