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、といった確認ができそうです。

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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