Android平台为用户提供了轻量级的数据库 SQLite,可供用户存储相关数据。
在使用SQLite开发时候,主要用到以下三个类:
SQLiteOpenHelper:A helper class to manage database creation and version management.
SQLiteDatabase:SQLiteDatabase has methods to create, delete, execute SQL commands, and perform other common database
management tasks.
ContentValues:This class is used to store a set of values that the ContentResolver
can
process.
以下是一个测试的例子,主要说明SQLite的使用方法:
要使用SQLite数据库系统存储数据,和使用其他的数据库系统步骤类似,我们主要通过回答以下几个问题来学习该数据库系统的使用方法:
- 如何创建数据库?
SQLite中创建数据库,主要通过类SQLiteOpenHelper类来完成。
SQLiteOpenHelper类是一个抽象类,程序开发者首先要定义该类的子类(例子程序中为:SQLiteHelper类);其次通过该类提供的两个方法:getWritableDatabase()以及getReadableDatabase()方法来创建/获取数据库。
//创建SQLiteHelper对象,并设置数据库名 SQLiteHelper helper = new SQLiteHelper(this,this.databaseName); //如果仅有上面一句,不会创建数据库,必须调用getWritableDatabase()或者 getReadableDatabase()方法,才会真正的创建数据库 SQLiteDatabase db = helper.getWritableDatabase();
SQLiteOpenHelper类为我们提供了回调函数onCreate()方法,可以在此方法中写有关表创建的代码。
package masic007.SQLite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; public class SQLiteHelper extends SQLiteOpenHelper { public static int version = 1; public SQLiteHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } public SQLiteHelper(Context context,String name) { super(context,name,null,SQLiteHelper.version); } @Override public void onCreate(SQLiteDatabase db) { System.out.println("Create DataBase"); String sql = new String("CREATE TABLE user(id int,name TEXT);"); db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
- 如何使用数据库?
SQLiteDatabase类为我们提供了丰富的数据库操作方法,具体细节可以参看Android开发文档。这里我们以一个简单的插入数据例子来说明使用方法。
//获取可写数据库 SQLiteHelper helper = new SQLiteHelper(this,this.databaseName); SQLiteDatabase db = helper.getWritableDatabase(); //通过ContentValues存储要插入的数据,通过键值对存储 ContentValues contentvalues = new ContentValues(); contentvalues.put("id", "1"); contentvalues.put("name", "masic007"); //调用insert()方法插入数据; db.insert("user", null, contentvalues);