如何查詢已經建立的資料表表格呢?


當你在使用資料庫的時候,一定會有一個疑問,
我建立好的資料表格,應該要怎麼確認是否有建立呢?
其實不難,只需要利用adb就可以簡單作查詢了。
首先你必須先了解
以及如何使用ADB
就可以利用Console來直接作查詢,
而不用自己還要寫一大串UI來作檢驗。






一開始先建立好DBHelper的資料庫類別
這個類別只是單純的處理一個查詢,以及插入方法。
public class MySQLDBHelper extends SQLiteOpenHelper {

    private final static String DATABASE_NAME = "database";
    private final static int DATABASE_VERSION = 1;
    private final static String TABLE_NAME = "my_table";
    private final static String FEILD_ID = "_id";
    private final static String FEILD_TEXT = "item_text";
    private String sql = 
            "CREATE TABLE IF NOT EXISTS "+TABLE_NAME+"("+
                    FEILD_ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"+
                    FEILD_TEXT+" TEXT"+
                    ")";
    private SQLiteDatabase database;
    public MySQLDBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        database = this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        onCreate(db);
    }
    public Cursor query(){
        return database.rawQuery("SELECT * FROM my_table", null);
    }
    public void insert(String sql){
        ContentValues contentValues = new ContentValues();
        contentValues.put(FEILD_TEXT, sql);
        database.insert(TABLE_NAME, null, contentValues);
    }
}


然後再用我們寫的Activity來存取這個類別,幫我們處理好資料庫。

我們利用插入的方法,插入了三個字串在資料表格內。
mySQLDBHelper.insert("give me pass");
mySQLDBHelper.insert("let me pass");
mySQLDBHelper.insert("give we all pass");

當我們按下Button的時候,就會把資料表格內的文字部份撈出來。
@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
                
    Cursor cursor = mySQLDBHelper.query();
    cursor.moveToFirst();
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(cursor.getString(1)+"\n");
    while(cursor.moveToNext()){
        stringBuilder.append(cursor.getString(1)+"\n");
    };
    Toast.makeText(getApplicationContext(), stringBuilder, Toast.LENGTH_SHORT).show();
    cursor.close();
}




但是這樣很麻煩不是嗎?
如果每次都這樣寫,可是這些又不是功能的介面,
當資料量一大,那麼你就會被煩死。

因此我們要學會使用adb來查詢資料庫。
首先要切換進去adb, 只要你有開模擬器或者連到手機或平板電腦上,
就可以下
adb shell
然後你就會看到#字號
這時候你要到哪邊找你的專案呢?
通常我們寫得程式都會安裝在
/data/data/
之下,然後找到你的package名稱,例如我的就是
/data/data/com.givemepass.sqlitedbhelpdemo/
如果你有成功建立一個資料庫的話,
你就會看到有一個資料夾叫做databases,
切換進去就可以看到你所建立的資料庫名稱了,
這時候要進入資料庫就下
sqlite3 你的資料庫名稱
然後你就會看到一串文字
sqlite3 database
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
這樣就代表你成功進入資料庫了。
如果你想查詢有哪些表格,就可以下
sqlite> .table    
android_metadata  my_table
那麼下面就會列出這個資料庫內,所有的資料表格。

你也可以查詢有多少個資料庫在你的模擬器/機器上,你就可以下
sqlite> .database
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /data/data/com.givemepass.sqlitedbhelpdemo/databases/datab
1    temp
這樣就可以看到下面有多少個資料庫了。

接下來在這邊你可以作任何的資料庫查詢指令,
如果你學過SQL的語言,那麼應該就會很熟悉才對。
例如你想查詢某一個資料表格內的資料,就可以下
sqlite> select * from my_table;
1|give me pass
2|let me pass
3|give we all pass

很方便吧?
程式碼
http://uploadingit.com/file/lpuglladcj4sgrai/SQLiteDBHelperDemo.zip