My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
SQLiteOpenHelper  
SQLiteOpenHelper的使用,对数据库操作的封装
Updated Mar 9, 2010 by cm2...@gmail.com

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;
   }
	
}
Comment by dengxian...@gmail.com, Oct 17, 2010

GREAT

Comment by wangwei8...@gmail.com, Nov 21, 2010

good job......


Sign in to add a comment
Powered by Google Project Hosting