标签:语句 抽象方法 null 表名 情况 查询 while data 指针
SQLiteOpenHelper是个抽象类,所以需要实体类去继承它
提供两个抽象方法onCreat()和onUpgrade()用来创建和升级数据库
提供两个实例方法
getReadableDatabases()和getWritableDatabases(),这两个方法都可以创建或返回一个可读写的数据库,不同的是当数据库不可写入时(如磁盘空间满),那么getReadableDatabases()将会以只读的方式打开数据库,而getWritableDatabases()则会出现异常,所以平时使用推荐 getReadableDatabases()方法
SQLiteOpenHelper有两个构造方法(可重写),一般使用参数少的那个构造方法。
此方法接收4个参数
1.Context
2.数据库名称
3.第三个参数允许我们在查询数据库的时候返回一个自定义的Cursor,一般直接传入null,如果需要 传入一个cursor对象即可,在构造方法中 对应SQLiteDatabases.Cursorfactory cursor
4.传入一个当前版本号,用于升级数据库
getReadableDatabases()和getWritableDatabases()两个实例方法会返回一个数据库实例对象,创建使用ContentValues类型对象用来装载数据,ContentValues对象提供了put()方法的多个重载,只需在put()方法的参数列表中以("字段名","值")的形式添加即可,然后调用数据库实例对象的insert()方法来插入数据,insert()方法需要三个参数,第一个是 表名 ,第二个是 用于未指定添加数据的情况下给某些可为空的列自动赋值NULL,一般不需要,直接传入null, 第三个是 ContentValues对象。如图↓
更新数据,系统为我们提供了一个updata()方法,这个方法第一个参数和insert()方法一个 也是表名,第二个参数是 ContentValues对象 , 第三第四个参数是用来约束更新某一行或几行的数据,不指定 默认更新所有行, 如图↓
删除数据相比较其他三种方法最为简单,因为删除不需要传ContentValues对象过去,所以系统提供的delete()方法需要三个参数,同样第一个 还是表名 ,毕竟咱们得知道 咱们要操作的是哪张表嘛,然后第二第三个参数用于约束删除某一行或几行,不指定 默认删除所有行。 如下图↓↓↓
这特么才是重头戏,毕竟SQL的全称是 Structured Query Language(结构化查询语言),很明显 查询才是重中之重啊!!!。
所以 系统提供的query()方法,最短的一个方法重载也需要7的参数??,不过其实 我们平时并用不到这么复杂的,比如 笔者就选择了查询全部,也是所有的查询操作中最简单的,这里就不做过多讲解了,用到的时候再去看文档吧。
PS:需要注意的是 cursor.moveToFirst()方法是 将光标指针移动到第一行数据,因为默认的光标指向的位置是第一行的上一行,以此用来判断是否有数据。
相类似的的 while()语句中的moveToNext()方法是用来将光标移动至 下一行数据。
还有就是 用完 记得关闭cursor!!! 用完 记得关闭cursor!!! 用完 记得关闭cursor!!! 重要的事情说三遍
标签:语句 抽象方法 null 表名 情况 查询 while data 指针
原文地址:http://www.cnblogs.com/xykjlcx/p/7039814.html