android 数据库 SQLite的笔记

在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