Android開發筆記-使用Cursor讀取SQLite回傳值

內容說明:在主程式中使用SQLite的回傳值

資料來源:Android南部工作坊

當我們利用 SQLiteOpenHelper 類別建立好存取資料庫的各種方法時(詳情請參考「建立SQLite實作類別」與「SQLite類別中進行增刪改查」),就可以回到主程式來運用這些從資料庫抓取來的資料。請記住,各種存取資料庫的動作(SQL語法)最好是在SQLite類別裡執行,主程式只負責向SQLite類別要特定的資料而已。

從SQLite類別裡抓回來的資料是 Cursor 物件,可以把它想像成一張資料表,基本的操作方式如下(詳細方法請參考官方網站):

private SQLite dbHelper;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        dbHelper = new SQLite(this);
        Cursor cursor = dbHelper.getAll();  //取得SQLite類別的回傳值:Cursor物件
        int rows_num = cursor.getCount();   //取得資料表列數

        if(rows_num != 0) {
            cursor.moveToFirst();           //將指標移至第一筆資料
            for(int i=0; i<rows_num; i++) {
                int id = cursor.getInt(0);  //取得第0欄的資料,根據欄位type使用適當語法
                String name = cursor.getString(1);
                int value = cursor.getInt(2);
 
                cursor.moveToNext();        //將指標移至下一筆資料
            }
        }
        cursor.close();     //關閉Cursor
        dbHelper.close();   //關閉資料庫,釋放記憶體
    }

如果是使用 ListActivity 讀取資料庫,則使用的語法如下(2011.11.20 新增):

private SQLite dbHelper;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 無記錄
        getListView().setEmptyView(findViewById(R.id.empty));

        // 有記錄
        dbHelper = new SQLite(this);
        Cursor cursor = dbHelper.getAll();  //取得SQLite類別的回傳值:Cursor物件

        startManagingCursor(cursor);
        String[] from = new String[]{"name", "value"};  //讀取資料庫欄位
        int[] to = new int[]{android.R.id.text1, android.R.id.text2};   //目標ListView欄位名稱(固定)

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
                    android.R.layout.simple_list_item_2, 
                    cursor, from, to);
        setListAdapter(adapter);
    }