Android greendao将数据库存在SD卡
来源:互联网 发布:ubuntu源无法更新 编辑:程序博客网 时间:2024/05/22 09:43
重写OpenHelper 和DevOpenHelper 类中的方法
public static abstract class OpenHelper extends SQLiteOpenHelper { public OpenHelper(Context context, String name, CursorFactory factory) { //super(context, name, factory, SCHEMA_VERSION); super(new ContextWrapper(context) { /** * 获得数据库路径,如果不存在,则创建对象对象 * * @param name */ @Override public File getDatabasePath(String name) { // 判断是否存在sd卡 boolean sdExist = android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment.getExternalStorageState()); if (!sdExist) {// 如果不存在, Log.e("SD卡管理:", "SD卡不存在,请加载SD卡"); return null; } else {// 如果存在 // 获取sd卡路径 String dbMainDir = Constants.DATABASE_DIR; String dbPath = dbMainDir + name;// 数据库路径 String dpdir = dbPath.substring(0, dbPath.lastIndexOf(File.separator)); Debug.e(" dbPath 数据库 dpdir " + dpdir + " dbPath:" + dbPath); // 判断目录是否存在,不存在则创建该目录 File dirFile = new File(dpdir); if (!dirFile.exists()) { boolean dir = dirFile.mkdirs(); Debug.e(" 数据库目录创建失败 " + dir + " dbPath:" + dbPath); } // 数据库文件是否创建成功 boolean isFileCreateSuccess = false; // 判断文件是否存在,不存在则创建该文件 File dbFile = new File(dbPath); if (!dbFile.exists()) { try { isFileCreateSuccess = dbFile.createNewFile();// 创建文件 } catch (IOException e) { e.printStackTrace(); Debug.e("数据库创建失败 " + e.toString()); } } else { isFileCreateSuccess = true; } Debug.e(" 返回数据库文件对象 " + isFileCreateSuccess); // 返回数据库文件对象 if (isFileCreateSuccess) return dbFile; else return super.getDatabasePath(name); } } /** * 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。 * * @param name * @param mode * @param factory */ @Override public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) { return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null); } /** * Android 4.0会调用此方法获取数据库。 * * @see ContextWrapper#openOrCreateDatabase(String, * int, * CursorFactory, * DatabaseErrorHandler) * @param name * @param mode * @param factory * @param errorHandler */ @Override public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory, DatabaseErrorHandler errorHandler) { return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null); } }, name, factory, SCHEMA_VERSION); } @Override public void onCreate(SQLiteDatabase db) { Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); createAllTables(db, false); } } /* WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name, CursorFactory factory) { super(context, name, factory); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); dropAllTables(db, true); onCreate(db); } }
阅读全文
0 0
- Android greendao将数据库存在SD卡
- greenDAO数据库设置在SD卡的方法
- 将android程序中的数据库导出到SD卡
- Android将数据库保存到SD卡的实现
- Android将数据库保存到SD卡的实现
- Android 将assets中的数据库写入SD卡
- 将Android程序中的数据库导出到SD卡
- Android 获取SD卡是否存在
- android 判断SD卡是否存在
- android 检查SD卡是否存在
- android 数据库之greendao
- Android 数据库 GreenDao使用
- android数据库 greendao:3.1
- Android 数据库greenDAO基础
- Android 数据库 GreenDao
- Android GreenDao数据库
- android sd卡读取数据库
- android sd卡读取数据库
- dubbo 配置文件详解
- 解决window 热键(快捷键)占用问题
- 线程池编程示例
- iOS之Xcode 9 快捷键查看类或方法声明定义
- Java设计模式_(结构型)_组合模式
- Android greendao将数据库存在SD卡
- Java 自带四种线程池的使用
- unity新版粒子特效的组件获取
- Java后台如何实现跨域请求接口
- Eclipse远程调试Tomcat
- ZOJ2706-Thermal Death of the Universe
- android 图像加载 第三方开源 之
- Bootstrap 响应式实用工具——visible-xs、visible-sm、hidden-xs、hidden-sm等
- 学习笔记--第五章神经网络