標籤:exception manage rop base .data cto mysql sqlite test
最近在做項目的時候,為了方便測試人員測試,在應用中加入正式庫和測試庫切換的功能。為了防止正式庫和測試庫切換帶來的資料衝突,切換的時候必須把當前的資料庫清空。代碼如下:
package com.example.admin.greendaotest; import android.content.Context;import android.database.sqlite.SQLiteDatabase;import com.greendao.gen.DaoMaster;import org.greenrobot.greendao.database.Database;/** * Created by admin on 2017/9/19. */ public class DBManager { private final static String dbName = "student_db"; private static DBManager mInstance; private DaoMaster.OpenHelper openHelper; private Context context; public DBManager(Context context) { this.context = context; openHelper = new DaoMaster.OpenHelper(context, dbName, null){}; } /** * 擷取單例引用 * * @param context * @return */ public static DBManager getInstance(Context context) { if (mInstance == null) { synchronized (DBManager.class) { if (mInstance == null) { mInstance = new DBManager(context); } } } return mInstance; } /** * 擷取可讀資料庫 */ private SQLiteDatabase getReadableDatabase() { if (openHelper == null) { openHelper = new MySQLiteOpenHelper(context, dbName, null); } SQLiteDatabase db = openHelper.getReadableDatabase(); return db; } /** * 擷取可寫資料庫 */ private SQLiteDatabase getWritableDatabase() { if (openHelper == null) { openHelper = new MySQLiteOpenHelper(context, dbName, null); } SQLiteDatabase db = openHelper.getWritableDatabase(); return db; } public void deleSQL(){ SQLiteDatabase db=getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoMaster.dropAllTables(daoMaster.getDatabase(),true); DaoMaster.createAllTables(daoMaster.getDatabase(),true); } class MySQLiteOpenHelper extends DaoMaster.OpenHelper{ @Override public void onCreate(Database db) { super.onCreate(db); } public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) { super(context, name, factory); } } }
必須要加上DaoMaster.createAllTables(daoMaster.getDatabase(),true),不然重新進行資料庫操作的時候(crud)會報找不到資料庫表的錯誤:Caused by: android.database.sqlite.SQLiteException: no such table: 表名 ,至於為什麼不會重新建立資料庫表,我也不知道為啥,在這上面也浪費了一些時間,所以寫下這篇部落格。
Android GreenDao清空資料庫的方法