from eoe.cn
创建一个辅助类来简化你的数据库交互。考虑创建一个数据库适配器,来添加一个与数据库交互的包装层。它应该提供直观的、强类型的方法,如添加、删除和更新项目。数据库适配器还应该处理查询和对创建、打开和关闭数据库的包装。它还常用静态的数据库常量来定义表的名字、列的名字和列的索引。
importandroid.content.Context;
importandroid.database.*;
importandroid.database.sqlite.*;
importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
importandroid.util.Log;
publicclassMyDBAdapter
{
privatestaticfinalStringDATABASE_NAME=“myDatabase.db”;
privatestaticfinalStringDATABASE_TABLE=“mainTable”;
privatestaticfinalintDATABASE_VERSION=1;
//该指数(关键)的列名为使用在哪里等条款.
publicstaticfinalStringKEY_ID=”_id”;
//那个人的姓名和列索引的每一列在你的数据库.
publicstaticfinalStringKEY_NAME=”name”;
publicstaticfinalintNAME_COLUMN=1;
//TODO:创造公共领域.
//SQL语句创建一个新的数据库.
privatestaticfinalStringDATABASE_CREATE=“createtable“+
DATABASE_TABLE+“(“+KEY_ID+“integerprimarykeyautoincrement,“+
KEY_NAME+“textnotnull);”;
//变量来存储数据库的实例
privateSQLiteDatabasedb;
//上下文关系的应用使用数据库.
privatefinalContextcontext;
//数据库开/升级助手
privatemyDbHelperdbHelper;
publicMyDBAdapter(Context_context){
context=_context;
dbHelper=newmyDbHelper(context,DATABASE_NAME,null,DATABASE_VERSION);
}
publicMyDBAdapteropen()throwsSQLException{
db=dbHelper.getWritableDatabase();
returnthis;
}
publicvoidclose(){
db.close();
}
publiclonginsertEntry(MyObject_myObject){
ContentValuescontentValues=newContentValues();
//TODO填写ContentValues代表新排
returndb.insert(DATABASE_TABLE,null,contentValues);
}
publicbooleanremoveEntry(long_rowIndex){
returndb.delete(DATABASE_TABLE,KEY_ID+“=”+_rowIndex,null)>0;
}
publicCursorgetAllEntries(){
returndb.query(DATABASE_TABLE,newString[]{KEY_ID,KEY_NAME},
null,null,null,null,null);
}
publicMyObjectgetEntry(long_rowIndex){
MyObjectobjectInstance=newMyObject();
//TODO返回一个指针从数据库和连续
//使用价值的实例,以填充MyObject
returnobjectInstance;
}
publicintupdateEntry(long_rowIndex,MyObject_myObject){
Stringwhere=KEY_ID+“=”+_rowIndex;
ContentValuescontentValues=newContentValues();
//TODO填写ContentValue立足于社会发展的新对象
returndb.update(DATABASE_TABLE,contentValues,where,null);
}
privatestaticclassmyDbHelperextendsSQLiteOpenHelper
{
publicmyDbHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){
super(context,name,factory,version);
}
//没有数据库中存在时调用
//磁盘和帮助类的需要
//创建一个新的.
@Override
publicvoidonCreate(SQLiteDatabase_db){
_db.execSQL(DATABASE_CREATE);
}
//有一个数据库时调用版本不匹配的意义
//这个版本的数据库磁盘上需要被升级
//目前的版本.
@Override
publicvoidonUpgrade(SQLiteDatabase_db,int_oldVersion,int_newVersion){
//log的版本升级.
Log.w(“TaskDBAdapter”,“Upgradingfromversion“+
_oldVersion+“to“+_newVersion+
“,whichwilldestroyallolddata”);
//升级现有的数据库,以符合新版本.
//多以前的版本,可以处理通过比较
//_oldVersion和_newVersion价值观。
//最简单的例子就是放弃旧桌子和创造
//新的.
_db.execSQL(“DROPTABLEIFEXISTS“+DATABASE_TABLE);
//产生一个新的.
onCreate(_db);
}
}
}