Android中使用内置的轻量级数据库SQLite存储信息

本文讲一下关于SQLite的使用

一、首先我们需要掌握sql语句:

1、创建表

create table 表名(字段 字段数据类型,字段 字段数据类型...)

create table student(_id integer primary key autoincrement,name varchar(10),age integer)

2、删除表

drop table 表名

drop table student

3、插入数据(经常使用)

insert into 表名[(字段,字段...)] values(字段值,字段值....)

insert into student(_id,name) values(1,'zs')

insert into student values(2,'ls',20)

注意:

  1. 如果插入数据时未指定插入的字段  这时values后的数据值应该从表的第一个字段开始按照具体的类型依次插入

  2. 插入数据时要按照条进行插入 不能插入部分数据

    3. 如果存在自动增长的列需要明确指定插入的字段

4、删除数据

delete from 表名 where xx

delete from student where _id=1

5、修改数据

update 表名 set 字段=字段的新值,字段=字段的新值  where xxx

update student set name='we' where _id=1

6、查询数据(经常使用)

    select 字段名 from 表名 where xxx group by 分组字段 having 筛选 order by 排序字段 desc(asc)

    select 字段名 from 表名 where xxx order by 排序字段 desc(asc)

    select * from student where _id=2

    select * from student where _id<>2  <>不等于

    select * from student where _id>2 and name='we' and 同时符合两个条件

    select * from student where _id>2 or name='we'   or 符合其中一个条件

    select * from student where name like '_a'  _ 表示单个字符   %表示任意多个字符

    select * from student where name like '%a%'

    select * from student where name like 'a%'

    select * from student where name is null  判断某个字段的值是否是null

    select _id as id,name as 姓名,age as 年龄  from student

    select * from student where _id between 1 and 3  1-3之间

    select * from student where _id in(1,3) in(在括号范围内) id 1或者3

    select * from student limit 0,5  0表示起始的行数 5表示每页5条

7、聚合函数  sum() avg() max() min() count()

   select sum(age) from student

   select count(*) from student

   select max(age) from student

注:1、sqlite数据库存储的位置:data/data/应用程序包名/databases/xx库文件

2、如果一次性向数据库中插入大量数据(比如插入1000条),应该怎样做才最好呢?

答:采用事务批量插入。


二、需要用到一个帮助类SQLiteOpenHelper

创建一个类继承SQLiteOpenHelper,来创建数据库或者打开数据库,重写以下三个方法。详见下:

(SQLiteDatabase db) {
    String sql = + Dbutils.+ + Dbutils.+
            + Dbutils.+
            db.execSQL(sql)Log.()}

(SQLiteDatabase dboldVersionnewVersion) {
    (newVersion > oldVersion) {

        Log.()}
}

(SQLiteDatabase db) {
    .onOpen(db)Log.()}


三、通常定义一个数据库操作工具类,就叫DbManager吧。定义哪些方法,在下面的代码中都写了,注释详细。

MySqliteHelper (Context context) {
    (== ) {
        = MySqliteHelper(context)}
    }

(SQLiteDatabase dbString sql) {
    (db != ) {
        (!.equals(sql) && sql != ) {
            db.execSQL(sql)}
    }
}

(SQLiteDatabase dbString tableString nullColumnHackContentValues values) {
    count = (db != ) {
        count = db.insert(tablenullColumnHackvalues)}
    count}

(SQLiteDatabase dbString tableContentValues valuesString whereClauseString[] whereArgs) {
    count = (db != ) {
        count = db.update(tablevalueswhereClausewhereArgs)}
    count}

(SQLiteDatabase dbString tableString whereClauseString[] whereArgs) {
    count = (db != ) {
        count = db.delete(tablewhereClausewhereArgs)}
    count}

List<String> (SQLiteDatabase dbString sqlString[] selectionArgs) {
    Cursor cursor = (db != ) {
        cursor = db.rawQuery(sqlselectionArgs)}
    (cursor)}

List<String> (Cursor cursor) {
    List<String> list = ArrayList<String>()(cursor.moveToNext()) {
        indexId = cursor.getColumnIndex(Dbutils.)id = cursor.getInt(indexId)String address = cursor.getString(cursor.getColumnIndex(Dbutils.))list.add(address)}
    list}

List<String> (SQLiteDatabase dbString tableString[] columnsString selectionString[] selectionArgsString groupByString havingString orderBy) {
    Cursor cursor = (db != ) {
        cursor = db.query(tablecolumnsselectionselectionArgsgroupByhavingorderBy)}
    (cursor)}

(SQLiteDatabase db) {
    (db != ) {
        db.close()}
}


四、通常创建一个实体类Dbutils来存放诸如数据库名称、表名等信息的静态常量。

好了,到这里就差不多了。接下来就只要在组件如Activity中(或者Fragment也行)中创建数据库,打开数据库

 MySqliteHelper helper = DbManger.getInstance(getActivity());
SQLiteDatabase db=helper.getWritableDatabase();//创建数据库,但数据库已经存在时,此条语句就是打开数据库

然后就是使用DbManager中的静态方法对数据库进行各种操作了。

转载于:https://my.oschina.net/u/2439266/blog/495726

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值