本文以一个小例子来说明SQLite数据库操作。
(1)SQLiteOpenHelper使用方法
对于SQLite数据库的操作,不论是建库、连库、还是增删改查,都离不开SQLiteOpenHelper类。
必要构造函数:SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
主要方法:getReadableDatabase(),getWritableDatabase(),onCreate(SQLiteDatabase db),onOpen(SQLiteDatabase db)……
用法:写一个子类继承SQLiteOpenHelper类,并实现自己的方法。如:
/**
* DatabaseHelper作为一个访问SQLite的助手类,提供两方面功能:
* 1.getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象对数据库进行操作
* 2.提供了onCreate()和onUpdate()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
* * @author ys/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public DatabaseHelper(Context context, String name, int version) {
this(context, name, null, version);
}
public DatabaseHelper(Context context, String name) {
this(context, name, VERSION);
}
//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabase对象的时候,才会调用该方法
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("create a Database");
String sql = "create table user(id int, name varchar(20))";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
System.out.println("update a Database");
}
}
(2)再来看一下我们这个实例的界面及监听器代码
监听器代码:
//创建数据库
createDbButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(SqLiteActivity.this, "test_mars_db");
//只有调用了DatabaseHelper对象的getReadableDatabase()方法或getWritableDatabase()方法
SQLiteDatabase db = dbHelper.getReadableDatabase();
}
});
//更新数据库
updateDbButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(SqLiteActivity.this, "test_mars_db", 2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
}
});
//插入记录
insertButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
values.put("id", 1);
values.put("name", "zhangsan");
DatabaseHelper dbHelper = new DatabaseHelper(SqLiteActivity.this, "test_mars_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
//调用insert方法,就可以将数据插入到数据库中
db.insert("user", null, values);
}
});
//更新记录
//update table_name set xxcol=xxx where xxcol=xx...
updateButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(SqLiteActivity.this, "test_mars_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zhangsanfeng");
db.update("user", values, "id=?", new String[]{"1"});
}
});
//查询记录
queryButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(SqLiteActivity.this, "test_mars_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("user", new String[] {"id", "name"}, "id=?", new String[]{"1"}, null, null, null);
while(cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
System.out.println("query--->>" + name);
}
}
});