/** * @description: * @author chenshiqiang E-mail:csqwyyx@163.com * @date 2014年5月1日 下午3:23:43 * @version 1.0 */ package com.csq.thesceneryalong.io.db; import java.io.File; import java.io.IOException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.csq.thesceneryalong.app.App; import com.csq.thesceneryalong.constant.PathConstants; import com.csq.thesceneryalong.db.DaoMaster; import com.csq.thesceneryalong.utils.FileUtil; import com.csq.thesceneryalong.utils.SdcardUtils; public class MyOpenHelper extends SQLiteOpenHelper { // ------------------------ Constants ------------------------ private static final String dbName = "TheSceneryAlong.db"; private final static int dbVersion = 1; // ------------------------- Fields -------------------------- // ----------------------- Constructors ---------------------- public MyOpenHelper() { super(App.app, getDBPath(), null, dbVersion); // TODO Auto-generated constructor stub } // -------- Methods for/from SuperClass/Interfaces ----------- @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub DaoMaster.createAllTables(db, false); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub /*new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start();*/ } // --------------------- Methods public ---------------------- // --------------------- Methods private --------------------- /** * 有sd卡,在sd卡创建数据库,如果data下面有而sd卡没有,则先拷贝data下面数据库到sd卡 * 没有sd卡,在data目录下创建数据库 */ private static String getDBPath() { // 2.2 之前的版本 数据库不能传路径,放在data下 if (android.os.Build.VERSION.SDK_INT < 8) { return dbName; } String dataDbPath = App.app.getDatabasePath(dbName).getAbsolutePath(); if(SdcardUtils.isSdcardExist()) { //sd卡存在 File dir = new File(PathConstants.getDbpath()); if (!dir.exists()) { dir.mkdirs(); } String sdcardDbPath = PathConstants.getDbpath() + File.separator + dbName; if(!new File(sdcardDbPath).exists() && new File(dataDbPath).exists()) { //尝试复制data数据库文件到sd卡 try { FileUtil.saveFile(dataDbPath, sdcardDbPath, false); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return sdcardDbPath; } return dataDbPath; } // --------------------- Getter & Setter --------------------- // --------------- Inner and Anonymous Classes --------------- }