SQLiteOpenHelper类给我们提供了两个方法。onCreate(SQLiteDatabasedb)和onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion)。
onCreate(SQLiteDatabasedb),当数据库被第一次创建时调用,一般将创建表等初始化操作在该方法中执行。其中参数表示数据库的名称。onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。具体实例看代码:
public class PersonSQLite extendsSQLiteOpenHelper {
/**
* 数据库的构造方法,用来定义数据库的名称、查询结果集,版本
* @param context数据库创建的环境
* @param name 数据库的名称
* @param factory查询结果集
* @param version数据库的版本,最小为1
*/
publicPersonSQLite(Contextcontext) {
super(context,"person.db",null, 1);
// TODO Auto-generated constructor stub
}
/*
* 数据库第一次创建时调用(non-Javadoc)
* db为创建的数据库
* @seeandroid.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
*/
@Override
public voidonCreate(SQLiteDatabase db) {
//初始化数据库的表结构
db.execSQL("create table person id integer primary keyautoincrement,name varchar(20),number varchar(20)");
}
@Override
public voidonUpgrade(SQLiteDatabase db,intoldVersion,intnewVersion) {
// TODO Auto-generated method stub
}
在创建了数据库的表结构后,可以对数据库惊行增删改查的操作。在对数据库怎行操作前要得到数据库的实例SQLiteDatabase db= help.getWritableDatabase(),具体操作代码里有注解。
public class PersoDao {
private PersonSQLitehelp;
publicPersoDao(Contextcontext) {
help = new PersonSQLite(context);
}
/**
* 添加数据到数据库
*
* @param name
* @param number
*/
public void add(String name, String number) {
SQLiteDatabase db = help.getWritableDatabase();
db.execSQL("insert into person(name,number) values (?,?)",
new Object[] {name,number });
db.close();
}
/**
* 查询结果是否存在
*
* @param name
* 姓名
* @return true则表示结果存在
*/
public boolean find(String name) {
SQLiteDatabase db = help.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person where name=?",
new String[] {name });
booleanresult =cursor.moveToNext();
cursor.close();
db.close();
returnresult;
}
/**
* 更新一条记录
* @param name更改人的姓名
* @param newnumber电话号码
*/
public void update(String name,Stringnewnumber) {
SQLiteDatabase db=help.getWritableDatabase();
db.execSQL("update person set number=? where name=?",new Object[]{newnumber,name});
db.close();
}
/**
* 删除一条记录
* @param name
*/
public void delete(String name){
SQLiteDatabase db=help.getWritableDatabase();
db.execSQL("delete from person where name=? ",new Object[]{name});
db.close();
}