greenDAO資料庫之修改儲存地址
傳送門-->索引
一、DaoMaster.DevOpenHelper
在建立 DaoMaster.DevOpenHelper例項的時候如果第一個引數傳的是app的context,那麼資料庫的儲存地址和應用是在同一個包下。
DaoMaster.DevOpenHelper mHelper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);
二、修改context
如果想要修改db的位置,就必須修改這個context,程式碼如下;-)
DaoMaster.DevOpenHelper = = new DaoMaster.DevOpenHelper(new DaoManager.GreenDaoContext(context), DB_NAME, null);
public static class GreenDaoContext extends ContextWrapper {
private String currentUserId = "greendao";//一般用來針對一個使用者一個資料庫,以免資料混亂問題
private Context mContext;
public GreenDaoContext(Context context) {
super(context);
this.mContext = context;
}
/**
* 獲得資料庫路徑,如果不存在,則建立物件
*
* @param dbName
*/
@Override
public File getDatabasePath(String dbName) {
String dbDir = Environment.getExternalStorageDirectory().getPath();
if (TextUtils.isEmpty(dbDir)){
Log.e("SD卡管理:", "SD卡不存在,請載入SD卡");
return null;
}
File baseFile = new File(dbDir);
// 目錄不存在則自動建立目錄
if (!baseFile.exists()){
baseFile.mkdirs();
}
StringBuffer buffer = new StringBuffer();
buffer.append(baseFile.getPath());
buffer.append(File.separator);
buffer.append(currentUserId);
dbDir = buffer.toString();// 資料庫所在目錄
buffer.append(File.separator);
// buffer.append(dbName+"_"+currentUserId);//也可以採用此種方式,將使用者id與表名聯絡到一塊命名
buffer.append(dbName);
String dbPath = buffer.toString();// 資料庫路徑
// 判斷目錄是否存在,不存在則建立該目錄
File dirFile = new File(dbDir);
if (!dirFile.exists()){
dirFile.mkdirs();
}
// 資料庫檔案是否建立成功
boolean isFileCreateSuccess = false;
// 判斷檔案是否存在,不存在則建立該檔案
File dbFile = new File(dbPath);
if (!dbFile.exists()) {
try {
isFileCreateSuccess = dbFile.createNewFile();// 建立檔案
} catch (IOException e) {
e.printStackTrace();
}
} else
isFileCreateSuccess = true;
// 返回資料庫檔案物件
if (isFileCreateSuccess)
return dbFile;
else
return super.getDatabasePath(dbName);
}
/**
* 過載這個方法,是用來開啟SD卡上的資料庫的,android 2.3及以下會呼叫這個方法。
*
* @param name
* @param mode
* @param factory
*/
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode,SQLiteDatabase.CursorFactory factory) {
SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), factory);
return result;
}
/**
* Android 4.0會呼叫此方法獲取資料庫。
*
* @param name
* @param mode
* @param factory
* @param errorHandler
* @see android.content.ContextWrapper#openOrCreateDatabase(java.lang.String, int,
* android.database.sqlite.SQLiteDatabase.CursorFactory,
* android.database.DatabaseErrorHandler)
*/
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory,DatabaseErrorHandler errorHandler) {
SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), factory);
return result;
}
}
相關文章
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- Sqlserver資料庫儲存路徑的修改SQLServer資料庫
- 《資料儲存》之《分庫,分表》
- CentOS修改Mariadb資料庫檔案儲存路徑CentOS資料庫
- 資料庫表設計之儲存引擎資料庫儲存引擎
- 儲存資料之SharedPreference
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- gitlab資料庫儲存位置Gitlab資料庫
- 資料庫儲存過程資料庫儲存過程
- 分散式系統技術:儲存之資料庫分散式資料庫
- 分散式文件儲存資料庫之MongoDB副本集分散式資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- mysql資料庫安裝及預設儲存路徑修改方法MySql資料庫
- Docker最全教程——資料庫容器化之持久儲存資料(十一)Docker資料庫
- Android中的資料儲存之檔案儲存Android
- k8s之資料儲存-配置儲存K8S
- Spring Boot實戰系列(2)資料儲存之NoSQL資料庫MongoDBSpring BootSQL資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB訪問控制分散式資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB分片叢集分散式資料庫MongoDB
- 報表資料分庫儲存
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- MySql資料庫——儲存過程MySql資料庫儲存過程
- GreenDao存List案例
- 明解資料庫------資料庫儲存演變史資料庫
- k8s之資料儲存-高階儲存K8S
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- PostgreSQL 資料庫學習 - 1.資料庫體系結構之儲存結構SQL資料庫
- 分散式文件儲存資料庫之MongoDB基礎入門分散式資料庫MongoDB
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- 資料儲存--檔案儲存
- Android中的資料儲存之SharedPreferencesAndroid
- 海量資料儲存之動態SchemaOU
- 分散式文件儲存資料庫之MongoDB備份與恢復分散式資料庫MongoDB
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- zblog域名後無法訪問 zblog資料庫地址修改資料庫
- 第三方資料庫框架 - GreenDao簡介資料庫框架