Help us understand the problem. What is going on with this article?

自分で作ったAndroidアプリのSQLiteのDDLを確認する

More than 1 year has passed since last update.

個人のアプリをAndroid Architecture ComponentのRoomに変更してみようと思いました。
ただ、現状は OrmLite を利用しているので、そもそものDDL文がありません。(classへのアノテーションで表現している)
そのため、まずは現状調査のために、Android上で動作しているSQLiteのDDLを取得してみようと思います。

DBファイルを取得する

Android SQLiteのファイルをadbコマンドで取得 - Qiita に書かれている通りです。

例えば、今回のアプリでは build.gradle は下記のようになっています。

android {
    defaultConfig {
        applicationId "hm.orz.chaos114.android.slideviewer"
    }
    buildTypes {
        debug {
            applicationIdSuffix '.debug'
        }
    }
}

また、 SQLiteOpenHelper 継承のクラスが、下記のようになっていました。

public final class DatabaseHelper extends OrmLiteSqliteOpenHelper {
    private static final String DATABASE_NAME = "slide_viewer.db";
    private static final int DATABASE_VERSION = 1;
    public DatabaseHelper(Context context) {
        super(context.getApplicationContext(), DATABASE_NAME, null, DATABASE_VERSION);
    }
}

そのため、
[パッケージ名] : hm.orz.chaos114.android.slideviewer.debug
[データベース・ファイル名] : slide_viewer.db
となり、実行するコマンドは下記のようになりました。

adb shell run-as hm.orz.chaos114.android.slideviewer.debug cat databases/slide_viewer.db > app.db

DDLを取得する

sqlite3 コマンドは、Android SDKの中にあるようです。
adb コマンドなどと同様に、 ...Android/sdk/platform-tools のようなフォルダにPATHが通っていれば、そのまま実行できるはずです。
例えば、今回はCREATE文だけが欲しかったので、下記のようにしてみました。

> sqlite3 app.db .dump | grep CREATE
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE `talk` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `modifiedAt` INTEGER , `ratio` FLOAT , `url` VARCHAR );
CREATE TABLE `slide` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `original` VARCHAR , `preview` VARCHAR , `talk_id` INTEGER , `thumb` VARCHAR );
CREATE TABLE `talkmetadata` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `talk_id` INTEGER , `title` VARCHAR , `user` VARCHAR );

これを、Roomに変えたあとでも確認して、同じようになっていればOK、といった確認ができそうです。

noboru_i
Androidを中心に、iOSやサーバサイドも少しだけやっています。 CircleCIやDangerといった、CI/CD周りにも興味があります。
http://noboru-i.github.io/
monstar-lab
自社サービス「モンスター・チャンネル」や「セカイラボ」をはじめ、日本を代表する企業のWeb・アプリの受託企画/開発を行っています。
https://monstar-lab.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away