查詢數據及使用Cursor對象


使用SQLiteDatabase 對象查詢數據表中的數據,需要用到SQL的SELECT語句。

SELECT語句的基本語法如下:

SELECT  字段名     FROM  數據表名稱

 

“字段名”的部分可列出數據表中的一個或多個字段(以逗號分隔),或是用‘*’代表“所有字段“。

例如:

 

SELECT  *     FROM  test   //直接用 * 代表所有字段
SELECT name,phone,email  FROM test

 

使用Cursor對象獲取查詢結果

  要執行查詢,需要用到SQLiteDatabase 對象的rawQuery()方法,第1個參數為SELECT語句,第2個參數設為null即可:

 

rawQuery("SELECT *  FROM  test",null);  //返回test數據表的所有記錄

 

rawQuery()方法返回的查詢結果為Cursor類的對象。Cursor可稱為”數據指針“,要讀取查詢結果中某一個記錄,就必須將Cursor指標指到它,之后才能讀取其內容。

moveToFirst() 移到第一個記錄 moveToLast() 移到最后一個記錄
moveToNext() 移到下一個記錄 moveToPrevious() 移到前一個記錄
Cursor cur = db.rawQuery("SELECT  *   FROM  test");//執行查詢
if(cur.moveToFirst())   //查詢結果中有數據才繼續
    do{               //利用do/while循環逐個讀取//讀取指針所指的數據
}while(cur.moveToNext());  //若還有下一個記錄,就繼續do/while循環

 

public class MainActivity extends ActionBarActivity {
    static final String db_name = "testDB";  //數據庫名稱
    static final String tb_name = "test";   // 數據表名稱
    SQLiteDatabase db; //數據庫對象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //打開或創建數據庫
        db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE,null);
        String createTable = "CREATE TABLE IF NOT EXISTS " +
                tb_name +
                "(name VARCHAR(32)," +
                "phone VARCHAR(16)," +
                "email VARCHAR(64))";
        db.execSQL(createTable);        //創建數據表

        Cursor c = db.rawQuery("SELECT  *  FROM "+tb_name,null);//查詢tb_name數據表中的所有數據

        if(c.getCount()==0){          //若無數據,則立即新增兩項數據
            addData("Flag Publishing Co.","6666666","service@flag.com.tw");
            addData("PCDIY Magazine","7777777","service@flag.com.tw");
            c=db.rawQuery("SELECT  *  FROM "+tb_name,null);//重新查詢
        }

        if (c.moveToFirst()) {         //移到第1項數據(若有數據才繼續)
            String str = "總共有  "+c.getCount()+"項數據\n";
            str+="-------\n";

            do {              //逐項讀出數據,並串接成信息字符串
                str+="name:"+c.getString(0)+"\n";
                str+="phone:"+c.getString(1)+"\n";
                str+="email:"+c.getString(2)+"\n";
                str+="------\n";
            }while(c.moveToNext());   //有下一項就繼續循環
            TextView txv = (TextView) findViewById(R.id.txv);
            txv.setText(str);   //顯示信息字符串
        }
        db.close();  //關閉數據庫
    }

    private void addData(String name,String phone,String email) {
        ContentValues cv = new ContentValues(3);  //創建含3個數據項的對象

        cv.put("name", name);
        cv.put("phone",phone);
        cv.put("email", email);

        db.insert(tb_name, null, cv);    //將數據加到數據表
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM