Example #1
0
 /**
  * 创建FinalDb
  *
  * @param context
  * @param dbName 数据库名称
  */
 public static FinalDb create(Context context, String targetDirectory, String dbName) {
   DaoConfig config = new DaoConfig();
   config.setContext(context);
   config.setDbName(dbName);
   config.setTargetDirectory(targetDirectory);
   return create(config);
 }
Example #2
0
  private static synchronized DbUtils getInstance(DaoConfig daoConfig) {
    DbUtils dao = daoMap.get(daoConfig.getDbName());
    if (dao == null) {
      dao = new DbUtils(daoConfig);
      daoMap.put(daoConfig.getDbName(), dao);
    } else {
      dao.daoConfig = daoConfig;
    }

    // update the database if needed
    SQLiteDatabase database = dao.database;
    int oldVersion = database.getVersion();
    int newVersion = daoConfig.getDbVersion();
    if (oldVersion != newVersion) {
      if (oldVersion != 0) {
        DbUpgradeListener upgradeListener = daoConfig.getDbUpgradeListener();
        if (upgradeListener != null) {
          upgradeListener.onUpgrade(dao, oldVersion, newVersion);
        } else {
          try {
            dao.dropDb();
          } catch (DbException e) {
            LogUtils.e(e.getMessage(), e);
          }
        }
      }
      database.setVersion(newVersion);
    }

    return dao;
  }
Example #3
0
 /**
  * 创建 FinalDb
  *
  * @param context
  * @param dbName 数据库名称
  * @param isDebug 是否为debug模式(debug模式进行数据库操作的时候将会打印sql语句)
  */
 public static FinalDb create(Context context, String dbName, boolean isDebug) {
   DaoConfig config = new DaoConfig();
   config.setContext(context);
   config.setDbName(dbName);
   config.setDebug(isDebug);
   return create(config);
 }
Example #4
0
 /**
  * 使用以后的数据库,将assets的数据库拷贝到内存卡
  *
  * @param context
  * @param type 1||0 FinalDb.CopyDb
  */
 public static FinalDb create(Context context, int type, String dbName) {
   DaoConfig config = new DaoConfig();
   config.setContext(context);
   config.setType(type);
   config.setDbName(dbName);
   return create(config);
 }
Example #5
0
 public static DbUtils create(
     Context context, String dbName, int dbVersion, DbUpgradeListener dbUpgradeListener) {
   DaoConfig config = new DaoConfig(context);
   config.setDbName(dbName);
   config.setDbVersion(dbVersion);
   config.setDbUpgradeListener(dbUpgradeListener);
   return getInstance(config);
 }
Example #6
0
 private static synchronized FinalDb getInstance(DaoConfig daoConfig) {
   FinalDb dao = daoMap.get(daoConfig.getDbName());
   if (dao == null) {
     dao = new FinalDb(daoConfig);
     daoMap.put(daoConfig.getDbName(), dao);
   }
   return dao;
 }
Example #7
0
  private SQLiteDatabase createDatabase(DaoConfig config) {
    SQLiteDatabase result = null;

    String dbDir = config.getDbDir();
    if (!TextUtils.isEmpty(dbDir)) {
      File dir = new File(dbDir);
      if (dir.exists() || dir.mkdirs()) {
        File dbFile = new File(dbDir, config.getDbName());
        result = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
      }
    } else {
      result = config.getContext().openOrCreateDatabase(config.getDbName(), 0, null);
    }
    return result;
  }
Example #8
0
 /**
  * @param context 上下文
  * @param targetDirectory db文件路径,可以配置为sdcard的路径
  * @param dbName 数据库名字
  * @param isDebug 是否是调试模式:调试模式会log出sql信息
  * @param dbVersion 数据库版本信息
  * @param dbUpdateListener数据库升级监听器 :如果监听器为null,升级的时候将会清空所所有的数据
  * @return
  */
 public static FinalDb create(
     Context context,
     String targetDirectory,
     String dbName,
     boolean isDebug,
     int dbVersion,
     DbUpdateListener dbUpdateListener) {
   DaoConfig config = new DaoConfig();
   config.setContext(context);
   config.setTargetDirectory(targetDirectory);
   config.setDbName(dbName);
   config.setDebug(isDebug);
   config.setDbVersion(dbVersion);
   config.setDbUpdateListener(dbUpdateListener);
   return create(config);
 }
Example #9
0
 public static DbUtils create(Context context, String dbDir, String dbName) {
   DaoConfig config = new DaoConfig(context);
   config.setDbDir(dbDir);
   config.setDbName(dbName);
   return getInstance(config);
 }
Example #10
0
 /**
  * 创建FinalDb
  *
  * @param context
  */
 public static FinalDb create(Context context) {
   DaoConfig config = new DaoConfig();
   config.setContext(context);
   return create(config);
 }
Example #11
0
 private void debugSql(String sql) {
   if (config != null && config.isDebug()) android.util.Log.d("Debug SQL", ">>>>>>  " + sql);
 }
Example #12
0
  private FinalDb(DaoConfig config) {
    if (config == null) throw new DbException("daoConfig is null");
    if (config.getContext() == null) throw new DbException("android context is null");
    if (config.type == 1) {
      File file = new File(config.getContext().getFilesDir(), config.getDbName());
      if (!file.exists()) {
        // 拷贝数据库
        try {
          InputStream is = config.getContext().getAssets().open(config.getDbName());
          Utils.copyFile(is, file);

        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      this.db = SQLiteDatabase.openOrCreateDatabase(file, null);
    } else if (config.getTargetDirectory() != null
        && config.getTargetDirectory().trim().length() > 0
        && config.type != 1) {
      this.db = createDbFileOnSDCard(config.getTargetDirectory(), config.getDbName());
    } else {
      this.db =
          new SqliteDbHelper(
                  config.getContext().getApplicationContext(),
                  config.getDbName(),
                  config.getDbVersion(),
                  config.getDbUpdateListener())
              .getWritableDatabase();
    }
    this.config = config;
  }