使用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的更多相关文章

  1. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  2. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

  3. android学习笔记36——使用原始XML文件

    XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...

  4. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  5. udacity android 学习笔记: lesson 4 part b

    udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

  6. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  7. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

  8. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

  9. 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...

随机推荐

  1. SPSS数据分析—分段回归

    在SPSS非线性回归过程中,我们讲到了损失函数按钮可以自定义损失函数,但是还有一个约束按钮没有讲到,该按钮的功能是对自 定义的损失函数的参数设定条件,这些条件通常是由逻辑表达式组成,这就使得损失函数具 ...

  2. 0517 Scrum 项目4.0

    Sprint 1看板: 任务认领(一种标签颜色代表一个人的任务): 许佳仪:紫色 柯晓君:红色 赖文亮:蓝色 卓宇靖:黑色 每日例会的时间:16:00     地点:课室 成员 团队贡献分 许佳仪 1 ...

  3. 20150514Linux下rpm包安装错误及解决方案

    (1)用rpm -ivh ***.rpm解压RedHat自带boost出现错误如下: warning: /media/RHEL_6.3 i386 Disc 1/Packages/boost-1.41. ...

  4. 读javascript高级程序设计06-面向对象之继承

    原型链是实现继承的主要方法,通过原型能让一个引用类型继承另一个引用类型. 1.原型链实现继承 function SuperType(){ this.superprop=1; } SuperType.p ...

  5. ITPUB网站的知识索引汇总

    1. ITPUB知识索引树 http://www.itpub.net/tree/ http://www.itpub.net/pubtree/index.htm 2. ITPUB知识索引贴——全文索引 ...

  6. UE3:SkeletalMesh的绘制流程

    [目标] SkeletalMesh的绘制流程 [思路] 1 顶点缓冲流 静态数据流向 动态数据流向(紫红色箭头) 2 FGPUSkinVertexFactory.ShaderDataType.Bone ...

  7. WCF初探-22:WCF中使用Message类(上)

    前言 从我们学习WCF以来,就一直强调WCF是基于消息的通信机制.但是由于WCF给我们做了高级封装,以至于我们在使用WCF的时候很少了解到消息的内部机制.由于WCF的架构的可扩展性,针对一些特殊情况, ...

  8. 云端 Linux下安装 Java

    根据需要在给云端的机器安装Java 问题的分解为2个一个是Java源文件的传输.一个是Linux下Java的安装. Java 传输到云端: 可以通过SSH Secure File Transfer C ...

  9. 爱默生UPS并机系统:进入与退出操作方法

    UPS并机系统的进入与退出: 进入:.合UPS的出线及进线开关:开启第一台UPS,等待整流指示灯常亮.然后Invert On,正常开机,此时UPS进入逆变状态 .合另外一台UPS的出线及进线开关,等待 ...

  10. Swift语言—有趣的字符串连接、数组、字典

    字符串链接:Swift语言中的字符串连接方式本人觉得非常的有趣,变量连接需要用右斜杠,并且变量名要括起来 “\(变量名)”,后面的字符串连接分别用逗号 ‘ , ’ 隔开 数组: Var arr = [ ...