android学习笔记49——SQLite2
使用SQLite工具
位于Android SDK/tools-->sqlite3.exe,其是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口。
.....
使用特定方法操作SQLite数据库
如果开发者对于SQL语法不熟悉,没有使用过SQL,android的SQLiteDatabase为其提供了inset、delete、update、query语句来操作数据库。
1.insert
SQLiteDatabase insert方法签名为:long insert(String table,String nullColumnHack,ContentValues values),这个插入方法参数说明如下:
table——表名称;
nullColumnHack——代表强行插入null值的数据列的列名;
ContentValues——代表一行记录的数据
ContentValues类似于Map,其提供了put方法用于存放数据,put(Sting key,Xxx value)其中key代表列名;getAsXxx(String key)方法用于取出数据。
例如:
ContentValues values = new ContentValues();
values.put("name",“孙悟空”);
values.put("nickName","齐天大圣");
//返回新添加记录的行号,该行号是一个内部值,与主键Id无关,发生错误返回-1
long rowNum = db.insert("pesonInfo",null,values);
注意:无论第三个参数values是否包含数据,执行insert()方法总会添加一条记录,如果第三个参数为空,会添加一条除主键之外其他字段都为null的记录。
insert()的底层实际上依然是通过构造insert SQL语句来进行插入的,因此其生成的SQL语句总是如下所示的语句:
//ContentValues里的key-value对的数量决定下面的key-value
inset into <表名>(key1,key2,...) values(value1,value2...);
此时,如果第三个参数为null或者其中key-value对的数量为0,生成的对应insert语句为:
insert into <表名> values()

2.使用update方法更新记录
SQLiteDatabase的update方法的签名为update(String table,ContentValues values,String whereClause,String[] whereArgs);
table——代表需要更新的表名称;
values——代表需要更新的数据;
whereClause——满足该whereClause子句的记录将会被更新,即更新条件;
whereArgs——用于为第三个参数传入参数;
该方法返回受此update语句影响的记录的条数。
例如,需要更新主键大于20的数据==》
ContentValues values = new ContentValues();
values.put("name","猪八戒");
int result = db.update("personInfo",values,"_id>?",new Integer[]{20});
本质:update 表名 set key1=value1,keyn=valuen where whereClause。其中whereArgs用于为whereClause传参。
3.使用delete方法删除记录
SQLiteDatabase的delete方法签名:delete(String table,String whereClause,String[] whereArgs):
table——代表需要删除的表名称;
whereClause——满足该whereClause子句的记录将会被删除,即删除条件;
whereArgs——用于为第三个参数传入参数;
该方法返回受此delete语句影响的记录的条数。
==》int result = db.delete("personInfo","_id>?",new Integer[]{20});
本质:delete table where whereClause。其中whereArgs用于为whereClause传参。
4.使用query方法查询记录
SQLiteDatabase的query方法的签名为:Cursor query(boolean distinct,String table,String[] columns,String selections,String selectionArgs,
String groupby,String having,String orderby,String limit).
distinct——指定是否除去重复记录;
table——表名;
columns——列;
selections——查询子句 ,相当于select语句where关键字后面的部分,在条件子句中允许使用占位符?;
selectionArgs——用于为selections子句中占位符传入参数值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会异常;
groupby——用于控制分组;
having——用于对分组进行过滤;
orderby——用于排序;
limit——用于进行分页;
5.事务
SQLiteDatabase中包含如下两种方法用于控制事务,如下:
benginTransaction
endTransaction
SQLiteDatabase还提供了inTransaction用来判断当前上下文是否处于事务环境中;inTransaction(),存在返回true,否则false.
注意:
当程序执行endTransaction()时将会结束事务,那到底是提交事务,还是回滚?
其取决于SQLiteDatabase是否调用了setTransactionSuccessful()来设置事务标志,如果程序事务执行中调用该方法设置了事务成功则提交事务;否则程序将会回滚事务。
如下:

android学习笔记49——SQLite2的更多相关文章
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android学习笔记进阶之在图片上涂鸦(能清屏)
Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- udacity android 学习笔记: lesson 4 part b
udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- Android学习笔记之Activity详解
1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...
随机推荐
- 读javascript高级程序设计03-函数表达式、闭包、私有变量
一.函数声明和函数表达式 定义函数有两种方式:函数声明和函数表达式.它们之间一个重要的区别是函数提升. 1.函数声明会进行函数提升,所以函数调用在函数声明之前也不会报错: test(); functi ...
- 【必备】史上最全的浏览器 CSS & JS Hack 手册(转)
浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技能.如果有一份浏览器 Hack 手册,那查询起来就方便多了.这篇文章就向 ...
- [转]为什么不能用memcached存储Session
以下内容转自:http://www.infoq.com/cn/news/2015/01/memcached-store-session -------------------------分割线---- ...
- 与您共享Linux Kernel 4.8分支首个维护版本
导读 Linux Kernel 4.8正式版于10月2日由Linus Torvalds发布,带来了包括AMDGPU OverDrive支持.NVIDIA Pascal支持.AMDGPU PowerPl ...
- hadoop运行原理之shuffle
hadoop的核心思想是MapReduce,但shuffle又是MapReduce的核心.shuffle的主要工作是从Map结束到Reduce开始之间的过程.首先看下这张图,就能了解shuffle所处 ...
- android快速入门
1.安装环境(jre java 运行环境,jdk java 开发工具包) 2.android studio 一.快捷键的使用 1. To open any class in the editor q ...
- golang——channel笔记
1.for i := range channel { //... } 相当于 循环进行 i<-channel,直至close(channel) 2. · 给一个 nil channel 发送数据 ...
- Jenkins 2.26 发布,可扩展的持续集成引擎
Jenkins 2.26 发布了.Jenkins 主要用于持续.自动地构建/测试软件项目,如CruiseControl与DamageControl,监控一些定时执行的任务.更新内容: Allow Co ...
- juqey.html(),text(),val()
.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值. 这三个方法功能上的对比 .html(),.text() ...
- IOS7.0 Xcode5 AutoLayout 备忘录
Xcode5 xib设置autolayout方式: 列表1: (选择两个view时可设置) 左边对齐, 右边对齐, 顶部对齐, 底部对齐, x轴中心对齐, y轴中心对齐, 文本底标线对齐, (单选择一 ...