SQLite简介
亮点:
① 轻 轻量级数据库 SQLite和C/S模式的数据库软件不同 体积小 没有服务端客户端 只要一个动态库就可以工作 (Linux下300多K)② 绿 核心引擎本身不依赖第三方的软件,不需要安装 拷贝即可使用③ 单一文件 一个数据库只有一个文件④ 跨平台 支持多个嵌入式设备
槽点:
① 多线程性能差
② 不支持全部的SQL
何时使用数据库保存数据: 当有大量结构相似的数据需要保存 比如 短信 电话本 聊天记录
Android下创建SQLite数据库
1 核心类
① SQLiteOpenHelper
② SQLiteDataBase
2 使用方法
第一步: 创建一个类继承 SQLiteOpenHelper 并实现父类的构造
public class MySQLOpenHelper extends SQLiteOpenHelper {public MySQLOpenHelper(Context context) {/**第一个参数 上下文第二个参数 创建的数据库文件名字第三个参数 游标工厂 通过游标工厂可以获得执行查询语句的返回值 Curor可以传 null 采用默认的游标工厂第四个参数 数据库的版本号 从1开始**/super(context, "itheima.db", null, 1);}
第二步 从写onCreate 方法 和onUpgrade 方法
第三步 在Activity中 创建MySQLOpenHelper对象( 注意 !!!! 至此并没有创建数据库)
第四部 调用 MySQLOpenHelper的getReadableDatabase或getWriteableDatabase方法获取SQLiteDataBase对象
public class MainActivity extends Activity {private SQLiteDatabase db;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MySQLOpenHelper openHelper = new MySQLOpenHelper(this);//获取SQLiteDatabase对象 如果数据库不存在则创建 如果存在则打开 如果磁盘空间满则出错db = openHelper.getWritableDatabase();//与getWritableDatabase功能类似 但如果磁盘空间满则会返回一个只读的数据库db = openHelper.getReadableDatabase();}
SQLiteOpenHelper的oncreate方法 和 onUpgrade方法
onCreate方法(必须实现的方法)
当调用getReadableDatabase或getWriteableDatabase方法 第一次创建数据库的时候会执行这个方法
作用: 在这个方法中做创建表 和初始化数据的操作
@Overridepublic void onCreate(SQLiteDatabase db) {//适合做创建表 初始化数据的操作db.execSQL("create table info (_id integer primary key autoincrement, name varchar(20),phone varchar(20))");}
onUpgrade方法(必须实现的方法)
当调用getReadableDatabase或getWriteableDatabase方法时 如果数据库版本号变大 则会调用这个方法
作用: 在这个方法中做数据库或表结构修改的操作 比如给表添加字段 或给数据库增加新的表
@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//通过oldVersion 和newVersion 可以判断当前版本号和最新的版本号//真实开发环境可能会针对不同的数据库版本做不同的操作db.execSQL("alter table info add age integer");}
onDowngrade方法(可选)
当调用getReadableDatabase或getWriteableDatabase方法时 如果数据库版本号变小 则会调用这个方法
作用: 处理数据库版本降级的操作 如果不重写这个方法 则默认数据库降级会抛异常
@SuppressLint("NewApi") @Overridepublic void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {//处理数据库降级的需求 注意 super.onDowngrade 一定要删掉 否则如果数据库降级依然会抛异常//super.onDowngrade(db, oldVersion, newVersion);//一般很少做数据库降级的操作 不一定要实现}
注意 : onCreate onUpgrade 由系统调用 不需要手动调用