sqlite学习

来源:互联网 发布:淘宝拍a发b不降权 编辑:程序博客网 时间:2024/04/28 20:39

version 2.0
Sqlite是一种轻量级的数据库,设计于在嵌入式设备上,占用资源少,通常在嵌入式设备上只占用几百kb

SQLiteOpenHelper
使用SQLiteDatabase需要依靠辅助类SQLiteOpenHelper来对数据库进行操作;继承该类即可
它里面的方法:
OnCreate() 第一次创建数据库时执行
OnOpen() 打开数据库时调用
OnUpgrade() 需要升级数据库时调用
close() 关闭打开的数据库
构造方法:
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version);
如果要查询操作,可以通过getReadableDatabase()获取数据库进行操作
如果要修改操作,可以通过getWritableDatabase() 获取数据库进行操作

对数据库的增删改查:
需要借助ContentValues来配合进行数据的读写,ContentValues类似于Map类型的存储结构,但是只能存储基本的类型,int/double等
put(key,value); key值必须要和数据库表里面的变量名相同

Insert:
SQLiteDatabase.insert(String table, String nullColumnHack, ContentValues values)
参数1 – 表名
参数2 – 使用该方法,就必须在数据库里面插入一条记录,但是有可能参数3是一个空值或者里面的数据条数为0,这样的话,在数据库中插入所有的空值是不允许的;所有有了这个值,但数据为空时,可以创建一条除了主键之外的项全为null的记录
参数3 – 存入的数据

返回,插入项目的ID,失败返回-1

Update:
SQLiteDatabase.update(String table, ContentValues values, String whereClause, String[] whereArgs)
参数1 – 表名
参数2 – 更新的数据,只需要填入更新的项目即可
参数3 – 更新数据发生的条件,防注入写法,例如:”id=?” 该项为null,则更新所有行
参数4 – 参数3中问好填入的数据,如果有多个,则按顺序依次填入new String[]{“1”}

返回: 数据库表中更新的条数

Delete:
SQLiteDatabase.delete(String table, String whereClause, String[] whereArgs)
同上,但是参数2如果为null,则删除所有行

返回:受影响的条数  即删除的条数

Query:
1. SQLiteDatabase.rawQuery(String sql, String[] selectionArgs)
参数1 – 是一个sql语句,是防注入的写法写的,里面有带?的字样
参数2 – 参数1中?号处要填入的数据

返回: Cursor,查询结果的集合,cursor自带了很多方法,可以对数据的条数查询/数据位置移动/提取数据等,普通提取数据的方法如下:
    cursor.moveToFirst();    while(cursor.isAfterLast()){        Cursor.getInt(cursor.getColumnIndex("age"));            //age为数据库中表里面的变量名称        Cursor.getString(cursor.getColumnIndex("name"));        cursor.moveToNext();    }
2. query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 这是另外一种查询,可以返回表的部分字段参数2 -- 需要返回的表的项,null返回所有项参数3 -- 查询条件,即where后面的数据,例如 id=?参数4 -- 参数3中?好处填入的数据groupBy:分组列  

having:分组条件
orderBy:排序列
limit:分页查询限制

他们的区别:
RawQuery()使用SQL语句进行查询;而query是android用自己的api进行查询的;而且后者相比于前者有一个好处,前者的String的SQL语句有可能单词拼写错误,而后者则不会

android事务:
事务是防止对数据库做一些操作时,突发异常如断电,导致操作只执行了一半,从而引发的数据异常
事务机制,则表明对数据库的操作要么做完,要么一步也不做

    beginTransaction()   开始事务    try{        数据库操作语句        setTransactionSuccessful()     }catch(exception e){    }finally{        endTransaction()     }
在begin和end之间即是对数据库操作语句,执行到end时,它回去查看事务成功标志,是否调用了settranscationSucessful(),如果成功,则事务完成,否则则进行回滚操作除此之外,sqlitedatabase还有一些执行sql的语句,executeSQL(String sql);     纯粹的sql语句,没有防注入的写法该方法只能执行处查询之外的一些操作
0 0
原创粉丝点击