博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 数据库 SQLite的笔记
阅读量:5323 次
发布时间:2019-06-14

本文共 1672 字,大约阅读时间需要 5 分钟。

在android中使用SQLite数据库,可以直接用SQLiteOpenHelper帮助类。通过构造此帮助类的一个实例,然后使用方法getReadableDatabase()或getWritableDatabase()就可以打开数据库,打开数据库是为了

这里的getReadableDatabase()方法又包含了getWritableDatabase()方法。正常情况下两个方法都会得到一个可读写的数据库,但如果出现磁盘满了等异常情况,getWritableDatabase()就会出错,而getReadableDatabase()还可以得到一个只读方式打开的数据库。

SQLiteOpenHelper是一个抽象类,必须自己实现其中的具体操作。可以重写构造方法(简单传递一个context)、onCreate()中实现建表的SQL语句(like db.execSQL("create table tableName(xxx xxx, aaa aaa, bbb bbb)") )使得刚创建数据库的同时建立自己需要的表(用惯了sharedpreference都要忘记数据库中的Table了)、onUpgrade()中实现数据库更新操作,因为onCreate仅在数据库初次建立时运行,如果检测到数据库已存在,就不会执行onCreate中的操作。

对此可以在onUpgrade()中将所有表丢弃,然后再调用onCreate(),这样一旦版本号增大了,就可以更新各表了。

SQLiteOpenHelper中,常用的构造方法有4次参数,包括context, 数据库名, cursor和版本号。

 

往数据库中增删改数据的操作,就写在相应的活动中,像MainActivity之类的。

插入数据步骤:先构造一个databaseHelper(是自己把SQLiteOpenHelper实现出来的类的实例)然后由此helper得到可写数据库,传给SQLiiteDatabase类的实例db。(此处有点不懂的是,得到helper的时候就执行了其中的onUpgrade,还是insert完之后它才执行)。然后构造一个ContentValues实例,用put方法存入键值对,然后再对SQLiiteDatabase类的实例db执行insert方法,参数有三个,包括表名,第二个先不管填null,第三个是ContentValues的实例(此处没有数据库名的参数,是因为帮助类helper是为专门一个数据库构造的,其构造方法已有数据库名)。

更新数据步骤:基本和插入数据相同,不同的是insert换为update方法,参数有4个,分别为表名、ContentValues实例、where(like "name=?")、selectionArgs(字符串,填在上一个参数的位置)。

删除数据步骤:和更新数据唯一的区别就是update改为delete,参数的类型是一样的。

查询数据步骤:

这里比较不一样,类SQL语言的地方比较多。新建一个Cursor类,不是用构造方法,而是对SQLiteDatebase类的实例调用实例方法query()方法,query()方法有7个参数:表名、列名、where、selectionArgs(到此,和upgrade&delete一样)、group by语句、group by args、排序。它的返回值就是一个cursor实例。

得到cursor实例之后,先判断一下是否为空,然后在一个while循环中将所有键值取出来就好了,判断是否结束的方法是while(moveToNext)。取出键值可以这样: String temp = cursor.getString(cursor.getColumnIndex("xxx")) ;

其实这里可以看出,SQLite的操作,很多地方和四大组件之一——ContentProvider中的操作有很大的相似程度。

转载于:https://www.cnblogs.com/jason31/p/9519332.html

你可能感兴趣的文章
List注意点【修改】
查看>>
sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
查看>>
拓扑排序的原理及其实现
查看>>
对StageWebView捕获位图时空白
查看>>
Provison Profile管理及存放路径
查看>>
shop--8.店铺列表展示--前端开发
查看>>
转:Can not issue data manipulation statements with executeQuery()错误解决
查看>>
详解C#委托,事件与回调函数(转)
查看>>
744. Find Smallest Letter Greater Than Target
查看>>
java实现二维码的生成.
查看>>
Android 发展思路
查看>>
Pythonic
查看>>
contentprovider的学习实例总结
查看>>
Sharepoint 自定义字段
查看>>
TQ2440之中断
查看>>
MySQL 触发器简单实例
查看>>
codeforces 712A. Memory and Crow
查看>>
Latex Undefined control sequence. ...\bm
查看>>
MySQL------报错Access denied for user 'root'@'localhost' (using password:NO)解决方法
查看>>
车牌识别LPR(三)-- LPR系统整体结构
查看>>