カメラが好きなオヤジのブログ。最近は、Androidアプリ開発もやってます。OpenGLやWebGLもありー> 前回の記事 SQLite Androidアプリ開発 SQLiteデータベースを使用する SQLiteは小さいデータベースシステムではあるが、ちゃんとトランザクションをサポートしている。トランザクションをかけておけば、エラーになったときにまとめて「なかったこと」にできるので便利。 また、大量のデータをINSERTする場合は、トランザクションをかけた方が高速。 普通のデータベースでは、BEGIN TRANSACTIONによりトランザクションを開始して、INSERTやDELETEでレコードを追加、削除する。処理に成功したら、COMMIT TRANSACTIONでコミットしてトランザクションを閉じる。途中でエラーになったら、ROLLBACK TRANSACTIONでトランザクションをかけ
さて、表題そのまんまです。 で、残念ながら高度なチューニングなんかの話ではなく、おそらく基本的な話です。けど、知らないとハマるかも。 とあるAndroidアプリの開発で、テーブルに20万件ほどのレコードを登録しないといけなくなりました。 で、Androidアプリで使うDBはSQLiteなので、SQLiteでテーブルつくってINSERTをループさせる方法で実装。 くっそ遅い!! INSERT終わるまで1時間以上かかるんですわ。 で、ちょっとググってみたところ、SQLiteのINSERTメソッド、内部でトランザクション管理してるみたいです。 なので、以下のようにやっちゃうと20万回トランザクションを開始→コミットってやってて、そのコストが激しくバカにならない。 SQLiteDatabase dbh; // 適当にインスタンスを生成しておく for (int i = 0 ; i < 200000
Tips 20:知っておきたいSQLiteデータベースの注意点 前回のTipsでは、Androidで「SQLite」データベースを使用する基本的な方法を紹介した。 今回は、実際にデータベースアプリケーションを開発する上で、気を付けなくてはならない幾つかのポイントを解説するとともに、前回のTipsで紹介し切れなかったデータベースのバージョンアップ処理についても紹介する。 テーブル定義についての注意点 Androidでデータベースアプリケーションを開発する際の注意点は3つある。 最初の注意点は、テーブルの定義に関するものだ。 テーブルの定義に使用するSQLは、SQLiteの構文をそのまま利用できる。しかし、利用に当たり、1点だけ“Android独自の作法”が存在する。それは「テーブルに『_id』というカラムを定義する」というものだ。 前回のTipsで紹介したサンプルコードでも、名前格納用の「n
SQLite を使ったアプリを作成しているのですが、アプリを実行してしばらく放置した後ログを確認すると、以下の様な警告が出ていました。 W/SQLiteConnectionPool(1261): A SQLiteConnection object for database ‘/data/data/…..’ was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed. データベース ‘/data/data/…..’ に対する SQLiteConnection オブジェクトがリークしました。データベースが必要なくなったら、進行中のトランザクションを適切に終了し、データベースをクローズして
SQLiteDatabaseLockedExceptionなるエラーが出たんですけど、 android.database.sqlite.SQLiteDatabaseLockedException java.lang.RuntimeException: An error occured while executing doInBackground() at android.support.v4.content.ModernAsyncTask$3.done(ModernAsyncTask.java:137) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:12
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く