SQLiteOpenHelper封装 继承SQLiteOpenHelper类,在构造方法中分别需要传入Context,数据库名称,CursorFactory(一般传入null,为默认数据库),数据库版本号(不能为负数)。在SQLiteOpenHelper中首先执行的是onCreate方法(当shujk第一次被创建时)。在构造函数时并没有真正创建数据库,而在调用getWritableDatabase或者getReadableDatabase方法时才真正去创建数据库,返回一个SQLiteDatabase对象。 public class MyDataBaseAdapter { // 用于打印log private static final String TAG = "MyDataBaseAdapter";
// 表中一条数据的名称 public static final String KEY_ID = "_id";
// 表中一条数据的内容 public static final String KEY_NUM = "num"; // 表中一条数据的id public static final String KEY_DATA = "data";
// 数据库名称为data private static final String DB_NAME = "Examples_06_06.db"; // 数据库表名 private static final String DB_TABLE = "table1"; // 数据库版本 private static final int DB_VERSION = 1;
// 本地Context对象 private Context mContext = null; //创建一个表 private static final String DB_CREATE = "CREATE TABLE " + DB_TABLE + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NUM + " INTERGER,"+ KEY_DATA + " TEXT)";
// 执行open()打开数据库时,保存返回的数据库对象 private SQLiteDatabase mSQLiteDatabase = null;
// 由SQLiteOpenHelper继承过来 private DatabaseHelper mDatabaseHelper = null; private static class DatabaseHelper extends SQLiteOpenHelper{
/* 构造函数-创建一个数据库 */ DatabaseHelper(Context context){
//当调用getWritableDatabase() //或 getReadableDatabase()方法时 //则创建一个数据库 super(context, DB_NAME, null, DB_VERSION); }
/* 创建一个表 */ @Override public void onCreate(SQLiteDatabase db){
// 数据库没有表时创建一个 db.execSQL(DB_CREATE); }
/* 升级数据库 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS notes"); onCreate(db); } } /* 构造函数-取得Context */ public MyDataBaseAdapter(Context context){
mContext = context; }
// 打开数据库,返回数据库对象 public void open() throws SQLException{
mDatabaseHelper = new DatabaseHelper(mContext); mSQLiteDatabase = mDatabaseHelper.getWritableDatabase(); }
// 关闭数据库 public void close(){
mDatabaseHelper.close(); }
/* 插入一条数据 */ public long insertData(int num, String data){
ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NUM, num); initialValues.put(KEY_DATA, data);
return mSQLiteDatabase.insert(DB_TABLE, KEY_ID, initialValues); }
/* 删除一条数据 */ public boolean deleteData(long rowId){
return mSQLiteDatabase.delete(DB_TABLE, KEY_ID + "=" + rowId, null) > 0; }
/* 通过Cursor查询所有数据 */ public Cursor fetchAllData(){
return mSQLiteDatabase.query(DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, null, null, null, null, null); }
/* 查询指定数据 */ public Cursor fetchData(long rowId) throws SQLException{
Cursor mCursor = mSQLiteDatabase.query(true, DB_TABLE, new String[] { KEY_ID, KEY_NUM, KEY_DATA }, KEY_ID + "=" + rowId, null, null, null, null, null);
if (mCursor != null){
mCursor.moveToFirst(); } return mCursor;
}
/* 更新一条数据 */ public boolean updateData(long rowId, int num, String data){
ContentValues args = new ContentValues(); args.put(KEY_NUM, num); args.put(KEY_DATA, data);
return mSQLiteDatabase.update(DB_TABLE, args, KEY_ID + "=" + rowId, null) > 0; } } |