加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite学习

发布时间:2020-12-12 23:46:02 所属栏目:百科 来源:网络整理
导读:version 2.0 Sqlite是一种轻量级的数据库,设计于在嵌入式设备上,占用资源少,通常在嵌入式设备上只占用几百kb SQLiteOpenHelper 使用SQLiteDatabase需要依靠辅助类SQLiteOpenHelper来对数据库进行操作;继承该类即可 它里面的方法: OnCreate() 第一次创建

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[] 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语句,没有防注入的写法
该方法只能执行处查询之外的一些操作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读