前几篇关于"SQLiteDatabase" 时候 辅助类"SQLiteOpenHelper"的地位
今天在把 SQLiteDatabase 与 SQLiteOpenHelper 试图整合 有点想法 与大家分享分享
[思路]
1. SQLiteDatabase 用于数据库操作 所以必须返回一个句柄
2. SQLiteOpenHelper 用于协助SQLiteDatabase
[代码 步骤]
1. 定义 SQLiteHandler 的内部类 DBHelper 定义如下:
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE IF NOT EXISTS "
+ TB_NAME + " ("
+ ID + " INTEGER PRIMARY KEY,"
+ COUNTRY + " VARCHAR,"
+ CODE + " INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);
onCreate(db);
}
}
2. 定义 SQLiteHandler 构造函数 及 获取 SQLiteDatabase 句柄 的 函数 如下:
DBHelper dbHelper;
static SQLiteDatabase sqliteInstance;
Context context;
public SQLiteHandler(Context c,String name,int version){
context = c;
dbHelper = new DBHelper(context,name,null,version);
sqliteInstance = dbHelper.getWritableDatabase();
}
public static SQLiteDatabase GetSQLiteHandler(){
return sqliteInstance;
}
3. 如何使用
public class SQLiteHandlerUsage extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SQLiteHandler handler = new SQLiteHandler(this,"countrycode.db",1);
SQLiteDatabase db = handler.GetSQLiteHandler();
ContentValues values = new ContentValues();
values.put(SQLiteHandler.COUNTRY, "中国");
values.put(SQLiteHandler.CODE, 86);
db.insert(SQLiteHandler.TB_NAME,SQLiteHandler.ID, values);
ContentValues values2 = new ContentValues();
values2.put(SQLiteHandler.COUNTRY, "台湾");
values2.put(SQLiteHandler.CODE, 186);
db.insert(SQLiteHandler.TB_NAME,SQLiteHandler.ID, values2);
db.insert(SQLiteHandler.TB_NAME,SQLiteHandler.ID,null);
values.clear();
values.put(SQLiteHandler.COUNTRY, "意大利");
values.put(SQLiteHandler.CODE, 39);
db.update(SQLiteHandler.TB_NAME, values,SQLiteHandler.ID + " = 2",null);
db.execSQL("INSERT INTO "
+ SQLiteHandler.TB_NAME + "("
+ SQLiteHandler.COUNTRY + ","
+ SQLiteHandler.CODE + ") VALUES "
+ "('洪都拉斯',504)");
Cursor c = db.query(SQLiteHandler.TB_NAME,null,null,null,null,null,
SQLiteHandler.CODE+" DESC");
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2,
c,
new String[] {SQLiteHandler.COUNTRY,SQLiteHandler.CODE},
new int[] {android.R.id.text1,android.R.id.text2});
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
this.setListAdapter(adapter);
}
}
4. 运行效果 略过