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 ディレクトリにアクセスできない。
この記述どおり エミュレータを起動して、エミュレータにリモートアクセスする。
/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 を実行すると、文字化け。
3,コマンドプロンプトの文字コードをUTF-8に変更する。
ということで、コマンドプロンプトの文字コードをUTF-8に変更する。
コマンドプロンプトの文字コードを変更しても、使用するフォントが日本語対象外のフォントだと、結局文字化けするため、以下の手順を実行
コマンドプロンプトのフォントを MSゴシックに変更
コマンドプロンプトの文字コードの変更
C:\Users\piroto>chcp 65001 C:\Users\piroto>chcp Active code page: 65001
再度実行
きちんと表示されるようになりました。
4. sqlite3 コマンドが入っていない!
root とっていない、X06HT ではディレクトリにアクセスできなかったが、root 化した、LiteTouch NOTE ならいけるか試してみた。
sqlite3 が見つからないときた。パスが通っている場所を確認したが、確かになさそう。
どうやら、sqlite3 コマンドは Android ならすべからく入っているわけではなさそうだ。
エミュレータから、sqlite3 コマンドを持ってきてうごかしている先達がいるので、今度試してみよう。
[Android] 実機内でsqlite3コマンドを使ってみよう