Android sqlite データベースにコマンドラインからSQLを発行してアクセスする

 

1.Android アプリが作成した SQLite データベースにコマンドラインからアクセスする

引き続き、英単語ロイド に改修を加えたいと思う。

今までは、英単語を格納するため、テーブルを1つだけ使っていたのだが、テーブルを2、3追加したい。

となると、当然、直接データベースにアクセスしたくなるので、方法を確認。

 リモートシェルから sqlite3 データベースを確認する を見ると、

  • adb リモートシェルから sqlite3 コマンドラインを使って、Android アプリケーションが作成した、SQLite データベースを管理できる
  • sqlite3 は、便利なツール、例えば、テーブルの内容を出力する .dump 、SQL の CREATE ステートメントを表示する、.schema 等を含んでいる

だそうだ。

2.エミュレータを立ち上げ、対象のアプリをインストール(Eclipseから起動)する

所有の実機(X06HT Desire) は、びびって root をとっていないので、権限がないため、data/data ディレクトリにアクセスできない。

sqlite_desire

この記述どおり エミュレータを起動して、エミュレータにリモートアクセスする。

/data/data/[アプリケーションapkパッケージ名]/databases

以下にデータベースが作成されているので、

sqlite3 [データベース名]

でデータベースに接続。

C:\Users\piroto>adb shell
# cd /data/data/info.typea.eitangoroid.pro/databases
cd /data/data/info.typea.eitangoroid.pro/databases
# ls
ls
webviewCache.db
FlippadDB
webview.db
# sqlite3 FlippadDB
sqlite3 FlippadDB
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
コマンド 内容
.help ヘルプを表示
.indices [TABLE] すべてのインデックスを表示。テーブルを指定も可
.schema [TABLE] CREATE ステートメントを表示。テーブル指定も可
.show 現在の設定を表示
.table [TABLE] テーブルリストを表示。テーブル指定(パターンマッチ)可

 

うーん。SELECT を実行すると、文字化け。

sqlite_sjis

3,コマンドプロンプトの文字コードをUTF-8に変更する。

ということで、コマンドプロンプトの文字コードをUTF-8に変更する。

コマンドプロンプトの文字コードを変更しても、使用するフォントが日本語対象外のフォントだと、結局文字化けするため、以下の手順を実行

コマンドプロンプトのフォントを MSゴシックに変更

sqlite_font

コマンドプロンプトの文字コードの変更

C:\Users\piroto>chcp 65001

C:\Users\piroto>chcp
Active code page: 65001

再度実行

きちんと表示されるようになりました。

sqlite_emu04

4. sqlite3 コマンドが入っていない!

root とっていない、X06HT ではディレクトリにアクセスできなかったが、root 化した、LiteTouch NOTE ならいけるか試してみた。

sqlite_litetouch

sqlite3 が見つからないときた。パスが通っている場所を確認したが、確かになさそう。

どうやら、sqlite3 コマンドは Android ならすべからく入っているわけではなさそうだ。

sqlite_not_include

エミュレータから、sqlite3 コマンドを持ってきてうごかしている先達がいるので、今度試してみよう。

[Android] 実機内でsqlite3コマンドを使ってみよう