日期:2014-05-16  浏览次数:20457 次

Android:Sqlitedatabase学习小结

      今天刚刚学习完Sqlite数据库的基础知识,随即把学到的东西记录下来,以便随后查阅,以下是自己对Sqlite数据库的小结:

1.Sqlite简介

       Sqlite是一款轻型的数据库,它包含在一个相对小的C库中,它的设计目标是嵌入式的,由于它占用资源非常少,可能只需要几百K的内存就可以了,并且支持Windows/Linux/Unix等等主流的操作系统,同时可以和很多种程序语言相结合,比如:C#/Java/php等,所以在嵌入式设备中特别受欢迎,这一点也正好符合android的开发要求,所以在Android开发中经常要用到该数据库。

2.Sqlite内部结构

       在内部,Sqlite有以下几个组件组成:SQL编译器、内核、后端以及附件。Sqlite通过利用虚拟机和虚拟数据库引擎,是调试、修改和扩展Sqlite的内核变得更加方便,所有SQL语句被编译成易读的、可以在Sqlite虚拟机中执行的程序集。其结构如下图:

                                                                                                     

                                                                                                                                    Sqlite内部结构图

 3.android中Sqlite的使用方法

        在Android中要想使用Sqlite数据库,首先应该创建一个类继承SQLiteOpenHelper类,我们把这个类命名为DatabaseHelper,它作为一个访问Sqlite的助手类,提供了两方面的功能:

        第一    getReadableDatabase()/getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作;

        第二    提供OnCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作;

实例代码如下:

public class DatabaseHelper extends SQLiteOpenHelper {
	
	private static final int VERSION = 1;
	//在SQLiteOepnHelper的子类当中,必须有该构造函数
	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		//必须通过super调用父类当中的构造函数
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}
	public DatabaseHelper(Context context,String name){
		this(context,name,VERSION);
	}
	public DatabaseHelper(Context context,String name,int version){
		this(context, name,null,version);
	}

	//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		System.out.println("create a Database");
		//execSQL函数用于执行SQL语句
		db.execSQL("create table user(id int,name varchar(20))");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		System.out.println("update a Database");
	}
}
       注:在继承SQLiteOpenHelper类时,必须要有public DatabaseHelper(Context context, String name, CursorFactory factory,int version) 这个构造方法。

       在定义好DatabaseHelper这个助手类后,就可以使用这个类创建Sqlite数据库,并对数据库进行操作了,下面通过一个定义好的Activity进行说明,代码如下:

public class SQLiteActivity extends Activity {
    /** Called when the activity is first created. */
	private Button createButton;
	private Button insertButton;
	private Button updateButton;
	private Button updateRecordButton;
	private Button queryButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        createButton = (Button)findViewById(R.id.createDatabase);
        updateButton = (Button)findViewById(R.id.updateDatabase);
        insertButton = (Button)findViewById(R.id.insert);
        updateRecordButton = (Button)findViewById(R.id.update);