greenDAO数据库设置在SD卡的方法

来源:互联网 发布:python sys.exit 0 编辑:程序博客网 时间:2024/05/16 06:50
package net.comikon.reader.dao;import java.io.File;import java.io.IOException;import android.content.Context;import android.content.ContextWrapper;import android.database.DatabaseErrorHandler;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;import de.greenrobot.dao.AbstractDaoMaster;import de.greenrobot.dao.identityscope.IdentityScopeType;import net.comikon.reader.dao.SiteDao;import net.comikon.reader.dao.ResourceDao;import net.comikon.reader.dao.ComicDao;// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT./** * Master of DAO (schema version 1000): knows all DAOs. */public class DaoMaster extends AbstractDaoMaster {public static final int SCHEMA_VERSION = 1000;/** Creates underlying database table using DAOs. */public static void createAllTables(SQLiteDatabase db, boolean ifNotExists) {SiteDao.createTable(db, ifNotExists);ResourceDao.createTable(db, ifNotExists);ComicDao.createTable(db, ifNotExists);}/** Drops underlying database table using DAOs. */public static void dropAllTables(SQLiteDatabase db, boolean ifExists) {SiteDao.dropTable(db, ifExists);ResourceDao.dropTable(db, ifExists);ComicDao.dropTable(db, ifExists);}public static abstract class OpenHelper extends SQLiteOpenHelper {public OpenHelper(Context context, String name, CursorFactory factory) {super(new ContextWrapper(context) {/** * 获得数据库路径,如果不存在,则创建对象对象 *  * @param name * @param mode * @param factory */@Overridepublic 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 dbDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();dbDir += "/net.comikon.reader";// 数据库所在目录String dbPath = dbDir + "/" + name;// 数据库路径// 判断目录是否存在,不存在则创建该目录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();}} elseisFileCreateSuccess = true;// 返回数据库文件对象if (isFileCreateSuccess)return dbFile;elsereturn super.getDatabasePath(name);}}/** * 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。 *  * @param name * @param mode * @param factory */@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);}/** * Android 4.0会调用此方法获取数据库。 *  * @see android.content.ContextWrapper#openOrCreateDatabase(java.lang.String, *      int, *      android.database.sqlite.SQLiteDatabase.CursorFactory, *      android.database.DatabaseErrorHandler) * @param name * @param mode * @param factory * @param errorHandler */@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory, DatabaseErrorHandler errorHandler) {return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);}}, "cmk.db", factory, SCHEMA_VERSION);}@Overridepublic 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);}@Overridepublic 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);}}public DaoMaster(SQLiteDatabase db) {super(db, SCHEMA_VERSION);registerDaoClass(SiteDao.class);registerDaoClass(ResourceDao.class);registerDaoClass(ComicDao.class);}public DaoSession newSession() {return new DaoSession(db, IdentityScopeType.Session, daoConfigMap);}public DaoSession newSession(IdentityScopeType type) {return new DaoSession(db, type, daoConfigMap);}}

0 2
原创粉丝点击