package coolbuy360.dbhelper; import android.R.integer; import android.annotation.SuppressLint; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * TODO ���ݿ���ֻ��࣬һ�����ݿ��Ӧһ������ʵ�֡� �������ڲ�����������ֶ����͸���ҵ���߼������ȵȡ� �����ݿ����ɾ�IJ�������ʹ��������� * �����ݵIJ�ѯ����������ʹ��Cursorǰ������startManagingCursor()��������Cursor�� * */ @SuppressLint("NewApi") public abstract class abstractDatabaseHelper { public static int ReadAble = 0; public static int WriteAble = 1; /** * SQLite���ݿ�ʵ�� */ protected SQLiteDatabase mDb = null; /** * ���ݿⴴ������ */ protected CreateDBHelper mDbHelper = null; /** * ��õ�ǰ���ݿ�������ʶ(һ���Ǹ�������)��������־�ȵļ�¼ * * @return */ protected abstract String getTag(); /** * ������ݿ����� * * @return */ protected abstract String getDatabaseName1(); /** * ������ݿ�汾��ֵ����Ϊ1�� �����ݿ�ṹ�����ı��ʱ���뽫��ֵ��1��ϵͳ���ڳ�ʼ��ʱ�Զ����� * createDBTables��dropDBTables�����������ݿ�ṹ�� * * @return */ protected abstract int getDatabaseVersion(); /** * �������ݿ���SQL��䣬һ��Ԫ��һ����� * * @return */ protected abstract String[] createDBTables(); /** * ɾ�����ݿ���SQL��䣬һ��Ԫ��һ����� * * @return */ protected abstract String[] dropDBTables(); /** * * TODO �ڲ����ݿⴴ�������� * */ private class CreateDBHelper extends SQLiteOpenHelper { public CreateDBHelper(Context ctx) { super(ctx, getDatabaseName1(), null, getDatabaseVersion()); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub executeBatch(createDBTables(), db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub if (oldVersion == 1 && newVersion == 2) { } else if (newVersion > oldVersion) { Log.w(getTag(), "Upgrading database '" + getDatabaseName() + "' from version " + oldVersion + " to " + newVersion); executeBatch(dropDBTables(), db); onCreate(db); } } /** * ����ִ��Sql��� * * @param sqls * @param db */ private void executeBatch(String[] sqls, SQLiteDatabase db) { if (sqls == null) return; db.beginTransaction(); try { int len = sqls.length; for (int i = 0; i < len; i++) { db.execSQL(sqls[i]); } db.setTransactionSuccessful(); } catch (Exception e) { Log.e(getTag(), e.getMessage(), e); } finally { db.endTransaction(); } } } /** * �򿪻��ߴ���һ��ָ�����Ƶ����ݿ� * * @param dbName * @param ctx */ public void open(Context ctx, int openflag) { Log.i(getTag(), "Open database '" + getDatabaseName1() + "'"); mDbHelper = new CreateDBHelper(ctx); if (openflag == 0) { mDb = mDbHelper.getReadableDatabase(); } else { mDb = mDbHelper.getWritableDatabase(); } } /** * �ر����ݿ� */ public void close() { if (mDbHelper != null) { Log.i(getTag(), "Close database '" + getDatabaseName1() + "'"); mDbHelper.close(); } } }