Android应用开发——数据库分析
来源:互联网 发布:死飞淘宝店 编辑:程序博客网 时间:2024/05/19 18:42
一、概述
二、SQLiteDatabase的使用
2.1 概述
2.2 常用方法
a、insert
原型:long android.database.sqlite.SQLiteDatabase.insert(String table,String nullColumnHack, ContentValues values)
作用:往数据库里面插入一行
参数:
table: 要插入数据的表的名称
nullColumnHack:当values参数为空或者里面没有内容的时候,我们insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情 况,我们要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。
values:一个ContentValues对象,类似一个map.通过键值对的形式存储值。
返回值:插入行的ID,如果失败则返回-1三、SQLiteOpenHelper的使用
为了实现对数据库版本进行管理,SQLiteOpenHelper类提供了两个重要的方法,分别是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用于初次使用软件时生成数据库表,后者用于升级软件时更新数据库表结构。当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次生成数据库时才会被调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的,假设数据库现在的版本是1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构,为了实现这一目的,可以把原来的数据库版本设置为2(有同学问设置为3行不行?当然可以,如果你愿意,设置为100也行),并且在onUpgrade()方法里面实现表结构的更新。当软件的版本升级次数比较多,这时在onUpgrade()方法里面可以根据原版号和目标版本号进行判断,然后作出相应的表结构及数据更新。
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase() 方法就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
疑问:MyDBHelper中的onCreate方法何时调用?
答:在调用getWritableDatabase方法时,系统会检查该数据库是否存在(即是否调用了onCreate方法),如果不存在,则调用onCreate方法,否则不调用。
参考资料:
http://blog.csdn.net/biexf/article/details/5951326
http://blog.csdn.net/jason0539/article/details/9977175(SQLiteDatabase)
- Android应用开发——数据库分析
- Android开发—数据库应用—添加列表活动(ListActivity)--分析记事本程序
- Android应用开发———Android应用程序分析讲解
- Android应用开发结构分析
- Android开发—数据库应用—使用数据库(SQLite)--查看模拟器目录
- Android开发—数据库应用—手动创建(SQLite)数据库--手动创建数据表(table)
- Android开发学习总结(五)——Android应用目录结构分析
- Android开发—数据库应用—访问数据表(SQLite OpenHelper) —添加查询
- Android开发—数据库应用—访问数据表(SQLite OpenHelper) —添加数据(Create)
- Android开发—数据库应用—访问数据表(SQLite OpenHelper) —删除数据
- 【视频课程】Android应用开发典型案例分析—主流mp3播放器
- 【视频课程】Android应用开发典型案例分析—主流mp3播放器
- Android开发—数据库应用—访问数据表(SQLite OpenHelper)
- 基于Android的短信应用开发(六)——将发出短信存至数据库
- 【Android 应用开发】 Application 使用分析
- 【Android 应用开发】 Application 使用分析
- Android应用开发性能优化完全分析
- Android应用开发性能优化完全分析
- UINavigationController详解与使用(二)页面切换和segmentedController
- C++ -> 在Window7 命令行下使用微软编译工具 cl.exe
- Camera
- 字符串匹配,KMP算法
- 使用JNI进行Java与C/C++语言混合编程(1)--在Java中调用C/C++本地库
- Android应用开发——数据库分析
- Class.newInstance()与new、Constructor.newInstance()的区别
- 只列出这个字段中有数值的行
- keytool命令总结
- poj.2586dfs
- hdu4609 FFT+计数 经典
- 类
- UINavigationController详解与使用(三)ToolBar
- jdbc的介绍与使用示例