引自博客大神一篇文  

地址:  http://blog.sina.com.cn/s/blog_15e2abdd90102wcdu.html

 

rawQuery()方法用于执行select语句。 

  1. /* 
  2. SQLiteDatabase的rawQuery() 用于执行select语句,使用例子如下:  SQLiteDatabase db = ....; 
  3. Cursor cursor = db.rawQuery(“select * from person”, null); 
  4. while (cursor.moveToNext()) { 
  5.     int personid = cursor.getInt(0); //获取第一列的值,第一列的索引从0开始 
  6.     String name = cursor.getString(1);//获取第二列的值 
  7.     int age = cursor.getInt(2);//获取第三列的值 
  8. cursor.close(); 
  9. db.close();  
  10.      rawQuery()方法的第一个参数为select语句;第二  个参数为select语句中占位符参数的值,如果select语句没有使用占位符,该参数可以设置为null。
  11.     带占位符参数的select语句使用例子如下: 
  12. Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%传智%", "4"}); 
  13.   
  14.       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[]{"需要的内容"}