Android数据库
创建数据库
1.创建一个类继承于SQLiteOpenHelper
实现里面的方法,创建构造方法
参数解释:
- @param context to use for locating paths to the the database 上下文
- @param name of the database file, or null for an in-memory database 数据库名称
- @param factory to use for creating cursor objects, or null for the default 游标工厂
- @param version number of the database (starting at 1); if the database is older 版本号
2.创建对象新建数据库
调用getReadableDatabase()/getWriteableDatabase()方法即可创建数据库
1 | //创建数据库 |
onCreate(SQLiteDatabase db)
第一次创建数据库的时候调用该函数
1 | //创建数据表(表名单独用类保存为常量) |
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
当数据库升级的时候调用该函数
根据版本号不同对数据库做相应的处理(增减字段等)
编写DAO操作类
1.通过helper对象获取SQLiteDatabase对象
2.编写sql语句
3.SQLiteDatabase对象执行sql语句
4.关闭数据库
eg:
1 | QLiteDatabase db = mhelper.getWritableDatabase(); |
5.查询操作
- 查询操作调用方法rawQuery(sql,null);
- 该方法返回游标对象 Cursor
- moveToNext()遍历返回结果
- getColumnIndex(“columnName”); 通过列名获取列号
- getString(index)\getInt(index); 通过列号获取数据
- 关闭游标、数据库。
eg:
1 | SQLiteDatabase db = mhelper.getWritableDatabase(); |
使用Android API操作数据
Android提供了数据操作的API,使操作数据库变得更加简单
插入
- insert(数据表名称, null, ContentValues);
- ContentValues是map容器,通过put()添加键值对及列名与其对应的值
- @return (long)新插入的行号,若为-1表示发生错误
eg:
1 | SQLiteDatabase db = mhelper.getWritableDatabase(); |
删除
- delete(数据表名称, 条件, 参数)
- 参数是用字符串数组表示,代替条件中的‘?’
- @return (int)影响行数
eg:
1 | SQLiteDatabase db = mhelper.getWritableDatabase(); |
更新
- update(数据表名称, ContentValues, 条件, 参数)
- return (int)影响行数
eg:
1 | SQLiteDatabase db = mhelper.getWritableDatabase(); |
查询
- query(数据表名称, 返回字段, 条件, 参数, 分组, HAVING,排序)
- HAVING 是条件中有函数的时候使用
- @return (Cursor)游标
1 | SQLiteDatabase db = mhelper.getWritableDatabase(); |
数据库事务
安全性
- 当数据库在进行写操作时,由于异常发生,可能导致数据前后出现不一致的对象,因此有必要采用事务
1 | db.beginTransaction();//开启事务 |
高效性
- 在执行大量数据操作时,普通方式会重复打开关闭数据库,而开启事务后,是将数据先写入内存,再一次性写入数据。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 元渊`Blog!
评论