色々メモ

技術系のメモとかを書いておきます

SQLiteに直接アクセスする

DBアクセスをするサンプルアプリを動かしていて、「本当にDBに書き込みできてるのかな??直接見てみたいなぁ」と思い、方法を調べてみました。

なかなか方法が見つからず、まさか無理なわけないよな…と思っていたら、公式の開発ガイドに載っていました…。
灯台下暗しもいいところですね…。
と、いうわけで、困ったらまずは開発ガイドやリファレンスを読みましょうという事で><

SQLiteのデータベースにアクセスする方法

(windowsの場合)
1.コマンドプロンプト起動
2.android SDKのtoolsの中にあるadbコマンド*1を使う
2.1.エミュレータの端末IDを取得

>adb devices
List of devices attached
emulator-5554   device    ←-----これが端末ID

2.2.エミュレータにシェルで接続

>adb -s emulator-5554 shell
#

2.3.接続したいデータベースを指定してSQLite3コマンドを実行
ここでは下記条件の場合になります

パッケージ名 アプリ名 DB名
jp.co.test.android SQLiteTest test.db
# sqlite3 /data/data/jp.co.test.android.SQLiteTest/databases/test.db
sqlite3 /data/data/jp.co.test.android.SQLiteTest/databases/test.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .databases       ←-----目的のDBに接続できたか確認
.databases
seq  name             file

---  ---------------  ----------------------------------------------------------

0    main             /data/data/jp.co.test.android.SQLiteEx/databases/test.db
           ↑-----ここに指定したDB名が表示されていればOK

2.4.SQLを実行してみる

sqlite> select * from test;
select * from test;
0|2000|りんご
1|1000|みかん

(補足)
このままだとちょっと見づらいかなーと思うので、カラム名の表示をONにします。

sqlite> .header on
.header on
sqlite> select * from test;
select * from test;
id|price|name
0|2000|りんご
1|1000|みかん


おそらく実機にも同様の手順でDBにアクセスできるかと思います。

参考URL

  • Android Developers-開発ガイド-Android Debug Bridge-Issuing Shell Commands

http://developer.android.com/intl/ja/guide/developing/tools/adb.html#shellcommands

*1:toolsフォルダのパスを通していない時はtoolsフォルダに移動してからコマンドを実行する