Android开发笔记(三十一)SQLite游标及其数据结构
ContentValues
ContentValues类似于映射,也是用于存储键值对。区别之处在于ContentValues的键只能是字符串,查看ContentValues的源码,会发现其内部保存键值对的数据结构就是HashMap,“private HashMap<String, Object> mValues;”。另外,ContentValues实现了Parcelable接口,也是为了提高手机上的处理效率。
这里提到ContentValues,还是因为Android源码在操作SQLite时只认这个数据结构,而不认别的java容器类,所以我们得额外对它加以了解了。幸好ContentValues的用法很简单,主要就是保存操作put,以及读取操作get。put和get方法都支持常用的基本数据类型,如整型、浮点数、字符串、布尔类型、字节等等。
SQLite在插入、更新、查询操作中需要用到ContentValues数据,下面是插入和更新的代码例子:
private static final String TABLE_NAME = "person";public int delete(String condition) {int count = mDB.delete(TABLE_NAME, condition, null);return count;}public boolean insert(ArrayList<Person> personArray) {for (int i = 0; i < personArray.size(); i++) {// ContentValues对象ContentValues cv = new ContentValues();cv.put("name", personArray.get(i).name);cv.put("age", personArray.get(i).age);cv.put("height", personArray.get(i).height);cv.put("weight", personArray.get(i).weight);cv.put("company", personArray.get(i).company);long result = mDB.insert(TABLE_NAME, "", cv);// 添加成功后返回行号,失败后返回-1if (result == -1) {return false;}}return true;}public int update(Person person, String condition) {ContentValues cv = new ContentValues();cv.put("name", person.name);cv.put("age", person.age);cv.put("height", person.height);cv.put("weight", person.weight);cv.put("company", person.company);int count = mDB.update(TABLE_NAME, cv, condition, null);return count;}
Cursor
Cursor是用来指示当前查询操作的游标,在Android中一般用于查询SQLite,也可用于查询ContentProvider,甚至可用于DownloadManager查询下载任务。Cursor的常用方法如下:
控制类
close : 关闭游标
isClosed : 判断游标是否关闭
isFirst : 判断游标是否在开头
isLast : 判断游标是否在末尾
移动类
moveToFirst : 移动游标到开头
moveToLast : 移动游标到末尾
moveToNext : 移动游标到下一个
moveToPrevious : 移动游标到上一个
move : 往后移动游标若干偏移量
moveToPosition : 移动游标到指定位置
取值类
getCount : 获取记录数
getInt : 获取当前记录的整型值
getFloat : 获取当前记录的浮点数值
getString : 获取当前记录的字符串值
getType : 获取当前记录的字段类型
下面是使用游标进行查询的代码例子:
public ArrayList<Person> query(String sql) {ArrayList<Person> personArray = new ArrayList<Person>();Cursor cursor = mDB.rawQuery(sql, null);if (cursor.moveToFirst()) {for (;; cursor.moveToNext()) {Person person = new Person();person.xuhao = cursor.getInt(0);person.name = cursor.getString(1);person.age = cursor.getInt(2);person.height = cursor.getFloat(3);person.weight = cursor.getDouble(4);person.company = cursor.getLong(5);personArray.add(person);if (cursor.isLast() == true) {break;}}}cursor.close();return personArray;}
点击下载本文用到的SQLite游标操作的工程代码
点此查看Android开发笔记的完整目录
Android开发笔记(三十一)SQLite游标及其数据结构相关推荐
- Android开发笔记(十一)自定义视图的构造方法
自定义视图的用法 Android自带的视图常常不能满足实际开发的需求,这种情况下我们就得自定义视图(View). 首先在res\values目录下找到attrs.xml(如没有则创建之),在该属性定义 ...
- 【Visual C++】游戏开发笔记三十一 回归季:游戏开发资料整理打包下载专栏行文思路整理
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/8147229 作者:毛星云 邮箱: h ...
- 【Visual C++】游戏开发笔记三十一 回归季 游戏开发资料整理打包下载 专栏行文思路整理
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...
- Android开发笔记(序)写在前面的目录
知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...
- Android开发笔记(序)
本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...
- Android开发笔记(序)写在前面的目录大全
转自 湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...
- Andriod开发之二十:Android开发笔记(序)写在前面的目录
https://blog.csdn.net/aqi00/article/details/50038385 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教 ...
- Android开发笔记(三十)SQLite数据库基础操作
SQLite语法 SQLite是一个小巧的嵌入式数据库,使用方便.开发简单,手机上最早由ios运用,后来android兴起同样也采用了sqlite.sqlite的多数sql语法与oracle是一样的, ...
- Android开发笔记(一百三十一)水波图形与水波动画
水波图形RippleDrawable RippleDrawable是Android在5.0之后新增的图形类,它的作用是在点击时展示水波动画,从而提示用户在这里按压了屏幕.这个提示效果类似于状态图形St ...
最新文章
- HDU1261(高精度乘法+高精度除法)
- 单链表的建立,插入和释放
- containers文件夹可以删除吗_电脑进行C盘清理,appdata文件夹可以删除吗?
- new 实例化对象是啥意思_前端经典面试题解密:JS的new关键字都干了什么?
- 11g oracle xe启动_详解Oracle等待事件的分类、发现及优化
- 当60亿次攻击来袭,人机联合打了一场漂亮的防御战
- 搭建ceph单节点对象存储服务器
- Nginx官网提供的版本类型
- Ubuntu 12.04 MTK环境配置说明
- DNS协议及Bind应用
- 透镜成像原理,眼球成像原理,小孔成像原理
- 用canvas画太极图(一步步详解附带源代码)
- hadoop tyarn冲突_hadoop集群启动yarn时出现的问题和解决方法
- 数字正交下变频(多相滤波法)
- 《Python编程:从入门到实践》 练习 9-4 9-5
- 第三代战斗机的特点有哪些
- buid和version之间的区别
- Python定时任务框架APScheduler快速入门
- 代码敲累了就来写《创业计划书》吧
- Java调用执行python脚本
热门文章
- Leetcode每日一题:190.reverse-bits(颠倒二进制位)
- 吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)
- Linux 获取grep前后几行
- 事务的传播行为和隔离级别?
- vb连接mysql出现的问题_连接数据库问题用户定义类型未定义【vb6】
- php验证码只有图片没有文字_有没有免费好用的图片文字识别工具?在线就能使用超准确...
- php与tp5,PHP开发(33)-ThinkPHP5.0(5)命名空间与TP5-PhpStorm
- gdal for java_gdal java环境配置
- IDEA调整输出字体的字体与大小
- Spring Data Jpa使用@Query时 报错Validation failed for query for method public abstract