android 在SdCard上创建数据库

来源:互联网 发布:脚手架用量计算软件 编辑:程序博客网 时间:2024/06/03 00:36

 数据库管理类中使用到的是自定义的Context,而非app的上下文对象:


/** * 用于支持对存储在SD卡上的数据库的访问 **/public class DbContext extends ContextWrapper {/** * 构造函数 *  * @param base *            上下文环境 */public DbContext(Context base) {super(base);}/** * 获得数据库路径,如果不存在,则创建对象对象 *  * @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 += "/database";// 数据库所在目录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) {// TODO Auto-generated catch blocke.printStackTrace();}} elseisFileCreateSuccess = true;// 返回数据库文件对象if (isFileCreateSuccess)return dbFile;elsereturn null;}}/** * 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。 *  * @param name * @param mode * @param factory */@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode,SQLiteDatabase.CursorFactory factory) {SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);return result;}/** * 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) {SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);return result;}}



0 0
原创粉丝点击