引自博客大神一篇文
地址: http://blog.sina.com.cn/s/blog_15e2abdd90102wcdu.html
rawQuery()方法用於執行select語句。
- /*
- SQLiteDatabase的rawQuery() 用於執行select語句,使用例子如下: SQLiteDatabase db = ....;
- Cursor cursor = db.rawQuery(“select * from person”, null);
- while (cursor.moveToNext()) {
- int personid = cursor.getInt(0); //獲取第一列的值,第一列的索引從0開始
- String name = cursor.getString(1);//獲取第二列的值
- int age = cursor.getInt(2);//獲取第三列的值
- }
- cursor.close();
- db.close();
- rawQuery()方法的第一個參數為select語句;第二 個參數為select語句中占位符參數的值,如果select語句沒有使用占位符,該參數可以設置為null。
- 帶占位符參數的select語句使用例子如下:
- Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%傳智%", "4"});
- Cursor是結果集游標,用於對結果集進行隨機訪問,如果大家熟悉jdbc, 其實Cursor與JDBC中的ResultSet作用很相似。使用moveToNext()方法可以將游標從當前行移動到下一行,如果已經移過了結果集的最后一行,返回結果為false,否則為true。另外Cursor 還有常用的moveToPrevious()方法(用於將游標從當前行移動到上一行,如果已經移過了結果集的第一行,返回值為false,否則為true )、moveToFirst()方法(用於將游標移動到結果集的第一行,如果結果集為空,返回值為false,否則為true )和moveToLast()方法(用於將游標移動到結果集的最后一行,如果結果集為空,返回值為false,否則為true ) 。
個人的一些理解:
1,這個cursor的作用就類似於我們打字的光標,對select到的結果進行遍歷
然后,利用while (cursor.moveToNext()){}中的語句,得到我們有用的信息
2,對於rawQuery()中第二個參數的理解:
(1)就像我們C語言的輸入輸出一樣,輸出一串字符時候,我們只需要在雙引號" ***** "打上我們需要打印的內容
而里面有變量時候,就需要%d,%s,%c等等的操作,然后后面在加上變量名。
(2)這里,如果前面雙引號中的select語句是完整的,永不到我們函數中的變量,我們就第二個參數寫null
而如果它要用到變量,我們就在變量處些問號? 第二個參數寫 new String[]{"需要的內容"}