LoginSignup
4
3

More than 5 years have passed since last update.

SQLiteOpenHelper#onCreate()のトランザクション処理

Posted at

以前、DB周りを実装していた時にいろんなサイトを参考にしていたけど

SQLiteOpenHelper#onCreate()でbeginTransaction()しているサイトもあればやっていないサイトもある。

やらなくても特に怒られるわけじゃないけど、何か気持ち悪いから調べてみる。

まずはドキュメントのonCreate()をみてみる。

特にトランザクションについては書かれていない。

ついでにonUpgrade()も見てみる。

こっちにはトランザクション内で実行されてるって書かれてる。

したらonCreateはトランザクションする必要ありそう?

これでも気になるからソースを見てみる。

db.beginTransaction();
try {
    if (version == 0) {
        onCreate(db);
       } else {
           if (version > mNewVersion) {
               onDowngrade(db, version, mNewVersion);
           } else {
               onUpgrade(db, version, mNewVersion);
           }   
       }   
       db.setVersion(mNewVersion);
       db.setTransactionSuccessful();
    } finally {
       db.endTransaction();
    }   
}

Cross Reference: /frameworks/base/core/java/android/database/sqlite/SQLiteOpenHelper.java

onCreateしっかりトランザクションされてるじゃん!

なので、わざわざSQLiteDatabase#beginTransaction()する必要はないみたい。

逆にSQLiteDatabase#beginTransaction()していても特に怒られるわけじゃないけど、

既にやってくれてるなら書く必要はないよね。

というお話しでした。

参考

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3