官方文档:https://developer.android.com/training/basics/data-storage/databases.html#WriteDbRow


原帖:http://sunzone.iteye.com/blog/1876902

查询数据库: 
两种方式-- 
第一种方式:类似INSERT UPDATE DELETE,有两种方法使用select 从SQLite数据库检索数据。 
使用rawQuery()直接调用select 语句,使用query() 方法构建一个查询。

小贴士: 
* onCreate(); 该方法在数据库第一次创建的时候调用,只调用一次; 
* onUpgrade(); 该方法在数据库版本更新的时候调用; 
* T-SQL: 国际标准机制 
DDL:数据定义语言:create drop alter; 
DCL: 数据控制语言:grant revoke; 
DML: 数据管理语言:insert delete update select ; 
* select 列的列表 from  表的列表 where 条件语句 group by 分组属性 having 分组条件 order by 排序列 asc|desc limit m, n; 
* 游标:游标的实质使一种能从包括多条数据记录的结果集种每次提取一条记录的机制;

游标的使用,Cursor的方法: 
* close(); 关闭游标 ,释放资源; 
* copyStringToBuffer(int columnIndex,CharArrayBuffer buffer); 在缓冲区中检索请求的列的文本,将其存储; 
* getColumnCount(); 返回所有列的行数; 
* getColumnIndex(String columnName); 返回指定的列,如果不存在那么返回-1; 
* getColumnIndexOrThrow(String columnName);从0开始返回指定列的名称,如果不存在将抛出异常; 
* getColumnName(int columnIndex); 从给定的索引返回列名; 
* getColumnNames(); 返回一个字符串数组的列名; 
* moveToFirst(); 将游标移动到第一条; 
* moveToLast(); 将游标移动到最后一条; 
* move(int offset); 将游标移动到指定ID; 
* moveToNext(); 将游标移动到下一条; 
* moveToPrevious(); 将游标移动到上一条; 
* getCount(); 得到游标总记录条数; 
* isFirst(); 判断当前游标是否为第一条数据;

案例:创建一个数据库,并在数据库第一次创建的时候初始化创建一张表student,添加记录, 
然后查询数据库种表的数据,显示出来; 

java代码如下: 

/* 查询数据库 *//* 返回一个游标对象 */
public Cursor selectData(){
/* 与数据库获得连接,获得只读属性 */
SQLiteDatabase sqliteDatabase = dbhelper.getReadableDatabase();

/* 使用游标保存得到的结果集 *//* 参1:查询语句 ; 参2:查询条件 */
//Cursor cursor = sqliteDatabase.rawQuery("select * from student", null);

/* 使用查询语句:方式二
* @ distinct --是否去除重复行 例:值为:true/false;
* @ table --表名
* @ columns --要查询的列 例: new String[]{"id","name","age"}
* @ selection --查询条件 例:"id>?"
* @ selectionArgs --查询条件的参数 例:new String[]{"3"}
* @ groupBy --对查询的结果进行分组
* @ having --对分组的结果进行限制
* @ orderby --对查询的结果进行排序; 例:"age asc"
* @ limit --分页查询限制 ; 例:"2,5" 从第2行开始,到第5行结束;注:行数从0 开始;
* */
Cursor cursor = sqliteDatabase.query(true,"student", new String[]{"_id","name","age"}, "_id>?", new String[]{"1"}, null, null, "age desc", "1,5");

/* 使用游标---获取游标中的数据 */
while(cursor.moveToNext()){
String id = cursor.getString(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String age = cursor.getString(cursor.getColumnIndex("age"));
Toast.makeText(MainActivity.this, "_id="+id+" name="+name+" age="+age, 1000).show();
}

return cursor;

}

最新文章

  1. OpenGL利用模板测试实现不规则裁剪
  2. [ACM_模拟] ZJUT 1155 爱乐大街的门牌号 (规律 长为n的含k个逆序数的最小字典序)
  3. Word Pattern | & II
  4. 请求webservice接口的某方法数据
  5. 使用achartengine实现自定义折线图 ----附代码 调试OK
  6. docker学习------registry可视化的实现
  7. iOS项目之使用开关控制日志输出的功能
  8. Windows下安装ZooKeeper
  9. C#模拟httpwebrequest请求_向服务器模拟cookie发送
  10. css引入的两种方法link和@import的区别和用法
  11. valgrind--内存泄漏检测(转)
  12. Drupal性能优化:蜜蜂培训性能优化一
  13. 【LibreOJ】#6354. 「CodePlus 2018 4 月赛」最短路 异或优化建图+Dijkstra
  14. winform中RichTextBox在指定光标位置插入图片
  15. Jmeter性能测试 对服务器使用资源进行监控之ServerAgent插件使用
  16. 使用URLConnection发送http请求实现简单爬虫(可以配置代理)
  17. mysql 函数模拟序列
  18. php自动生成mysql的触发代码。
  19. Firemonkey MultiView
  20. Linux主流发行版本

热门文章

  1. HDU6189 Law of Commutation (数论)
  2. jquery 实现点评标签 类似淘宝大众点评的 快速准时 货品完好等
  3. Linux 下 Bash 脚本对拍
  4. TestNG多线程测试-用xml文件实现
  5. 51NOD 1277 字符串中的最大值(KMP)
  6. JavaScript 面向对象的编程(三) 类的继承
  7. BNUOJ 23905 滑雪
  8. windows server 2008R2 上安装配置freesshd
  9. 20180906关于mysql启动
  10. Asp.Net页面生命周期[转]