SQLite を使用するアプリを作っていたら
こんな エラー が出ました。
09-20 21:34:30.889: WARN/Database(779): Reached MAX size for compiled-sql statement cache for database /data/data/com.hoge.packagename/databases/DBname.db; i.e., NO space for this sql statement in cache: SELECT * FROM downloaded_table WHERE author_id = '000129' AND book_id = '000673'. Please change your sql statements to use '?' for bindargs, instead of using actual values
エラー をよく読んでみたら
『データベースキャッシュの上限に達した』
とかなんとか。
そんな特別なことしてないんですがね・・・。
で、
『SQL文をバインド変数を使う形に書きなおせ』
的なことが書いてあるので、そのとおりにしたら無事解決しました。
≪修正前SQL文≫
・WHERE文の中で直接条件指定をしている
String sqlstr = "SELECT * FROM "+DB_DOWNLOADED_TABLE+" WHERE author_id = '"+author_id+"' AND book_id = '"+book_id+"'"; Cursor c = db.rawQuery(sqlstr, null);
≪修正後SQL文≫
・WHERE文をバインド変数(?)を使用する形
String sqlstr = "SELECT * FROM "+DB_DOWNLOADED_TABLE+" WHERE author_id = ? AND book_id = ?"; String selectArgs[] = {author_id, book_id}; Cursor c = db.rawQuery(sqlstr, selectArgs);
直接指定したほうが効率よさそうな気がするんですが
そうじゃないんですね。
奥が深い。
▽Reached MAX size for compiled-sql statement cache for database のキーワード
▽次の記事、前の記事
ActivityManager: Error type 3 | 改行 を含む 正規表現 ( Java )
▽Reached MAX size for compiled-sql statement cache for database にトラックバックする
Reached MAX size for compiled-sql statement cache for databaseのトラックバックURL:
http://chu3.xsrv.jp/mt5/mt-tb.cgi/1093
今日のキーワード
当サイトのRSS
カテゴリー
スポンサード リンク
新着記事
月別アーカイブ
オススメ書籍
【中級者必携の3冊】
目的から実現方法を探すいわゆる逆引き本。ネットで探してた情報が1冊にまとまっている感じです。
こちらも逆引き本。しかも情報量が多くて分厚い辞書的な1冊。必ず手元に置いておきたい1冊です。
様々なUIテクニックが載っている1冊。レイアウト関係でここまで詳しい本は他にありません。UIに強くなりたいなら必須。
Copyright (C) 2012 All Rights Reserved Android アプリ の 研究所 アンドロイド ナビ