前言:学习任何一种技术,其实我们一般都解决这样的几个问题:是什么???干什么??怎么用??
所以,这篇博客也将按照这样的思路:去讲解SQLite这个数据库
一、是什么??
SQLite是一个手机自带的数据库(类似于Access的小型数据库), 不区分数据类型(除了主键), 语法和MySQL相同, 每个库是一个文件
二、干什么??
SQLite能够存储数据,并对数据惊醒增、删、改、查。。。而这些功能的实现并不是依赖于JDBC,而是利用Android自己提供的API
三、怎么用??
好吧。。这个其实才是我们接下来应该详细讲解的。。。。
任何一个数据库,其实我们都是学习怎么创建库、创建表、基本CRUD、扩展的CRUD、最后学一下
事务,这样就算是基本学完了????对吧。。。。对!!!!!所以接下来就按照这个顺序进行讲解
1、创建库
在这个过程中会涉及到几个类(包括测试类)什么的,
1)DBOpenHelper
public class DBOpenHelper extends SQLiteOpenHelper { // 定义工具类, 继承SQLiteOpenHelper
public DBOpenHelper(Context context) { // 创建对象的时候, 需要传入上下文环境
super(context, "njupt.db", null, 4);
/*
* 由于父类没有无参构造函数, 必须显式调用有参的构造函数
* 参数1: 上下文环境, 用来确定数据库文件存储的目录
* 参数2: 数据库文件的名字
* 参数3: 生成游标的工厂, 填null就是使用默认的
* 参数4: 数据库的版本, 从1开始
*/
}
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("onCreate");
db.execSQL("CREATE TABLE person(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))"); // 执行SQL语句, 创建表
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("onUpgrade");
db.execSQL("ALTER TABLE person ADD balance INTEGER");
}
}
解释:
定义类继承SQLiteOpenHelper, 定义构造函数, 显式调用父类构造函数, 传入4个参数
重写onCreate()和onUpgrade()方法
调用getWritableDatabase()或者getReadableDatabase()方法都可以创建数据库
数据库文件不存在时, 会创建数据库文件, 并且执行onCreate()方法
数据库文件存在, 并且版本没有改变时, 不执行任何方法
数据库文件存在, 版本提升, 执行onUpgrade()方法
2)DBTest
这时,我们写一个测试类来测试一下。。。。。。
package cn.njupt.sqlite;
import android.test.AndroidTestCase;
public class DBTest extends AndroidTestCase {
public void testCreateDatabase() {
DBOpenHelper helper = new DBOpenHelper(getContext());
helper.getWritableDatabase();
/*
* 获取可写的数据连接
* 数据库文件不存在时, 会创建数据库文件, 并且执行onCreate()方法
* 数据库文件存在, 并且版本没有改变时, 不执行任何方法
* 数据库文件存在, 版本提升, 执行onUpgrade()方法
*/
}
}
....................................................到这里,创建库应该就讲解完了.......................................................