SQLite数据库


一、SQLite简介


     SQLite是一款轻量级的关系型数据库,它的运行速度非常快,占用资源非常少。非常适合在移动设备上使用。


二、创建数据库




        Android中专门提供了一个SQLiteOpenHelper帮助类,首先SQLiteOpenHelper是一个抽象类,如果要使用这个类,必须创建一个类来继承它,SQLiteOpenHelper中有两个抽象方法,一个是onCreat(),一个是onUpdate(),我们必须在自己的帮助类中重写这两个方法,然后再这两个方法中实现和升级数据库的逻辑。

        SQLiteOpenHelper中还有两个非常重要的实例方法,getReadableDatabase()和getWriteableDatabase(),这两个方法都可以创建或者打开一个数据库(如果这个数据库已经存在,那么直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象,不同的是,当数据库不可写入的时候(如磁盘空间已满),getReadableDatabase()返回的对象将以只读的方式去打开数据库,而getWriteableDatabase()方法将出现异常。



SQLiteOpenHelper中有两个构造方法可供重写,一般使用参数少的那个构造方法即可,这个方法接收四个参数:



dbHelper = new MyDatabaseHelper(context, name, factory, version);


第一个参数:Context,上下文


第二个参数:name ,数据库的名字



第三个参数:允许我们在查询数据的时候返回一个自定义的Cursor,一般都是null



第四个参数:表示当前数据库的版本号,用于对数据库的升级操作




构建出SQLiteOpenHelper的实例之后,在调用他的getReadableDatabase()和getWriteableDatabase()方法就能够创建数据库了,数据库文件会存放在、data/data<package name>/databases/目录下,此时,重写onCreat()方法也会执行,所以通常会在这里去处理一些建表的逻辑。






SQL的数据类型很简单:integer表示整型,real表示浮点型,text表示文本型,blob表示二进制型,autoincrement关键字表示自增长。



新建MyDatabaseHelper类:



public class MyDatabaseHelper extends SQLiteOpenHelper {

	
	public static final String CREATE_BOOK = "create table book("
			+"id integer primary key autoincrement, "
			+"author text, "
			+"price real,"
			+"page integer, "
			+"name text)";
	private Context mContext;
	
	public MyDatabaseHelper(Context context, String name,
			CursorFactory factory, int version) {
		super(context, name, factory, version);
		
		mContext = context;
		
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(CREATE_BOOK);
		Toast.makeText(mContext, "Create succeeded", 1).show();

	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		
	}

}


然后再MainActivity中得到MyDatabaseHelper的实例,调用getWritableDatabase()方法创建数据库就行了。execSQL()方法是建表语句。

补充:常用的数据库命令:



打开数据库:sqlite3+数据库名称
查看数据库中的表:table



查看建表语句: . schema



三、升级数据库