1. 程式人生 > >Android GreenDao清空數據庫的方法

Android GreenDao清空數據庫的方法

.sql mas 防止 @override oncreate androi turn tab tee

最近在做項目的時候,為了方便測試人員測試,在應用中加入正式庫和測試庫切換的功能。為了防止正式庫和測試庫切換帶來的數據沖突,切換的時候必須把當前的數據庫清空。代碼如下:

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清空數據庫的方法