Android Sqlite Failed to open database(无法打开数据库文件)

在学习和使用Android SQLite操作的时候碰到一个错误:无法打开文件

10-11 15:00:44.374: E/SQLiteDatabase(18129): Failed to open database '/data/data/com.example.briefvideo/files/com.briefvideo.db/databases/video.db'.
我的源代码(Android 版本 17):
public  static String DATA_BASE_PATH = context.getApplicationInfo().dataDir+"/databases/video.db";

SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DATA_BASE_PATH,null);
导致这个错误的原因有很多,我的原因是 “文件夹不存在”
修改后代码如下
public  static String DATA_BASE_PATH = context.getApplicationInfo().dataDir+"/databases/video.db";
  File f_=new File(DATA_PATH);
         if(!f_.getParentFile().exists()){
        	 Log.e("DBService", "文件夹不存在,新建一个");
        	 f_.getParentFile().mkdirs();
   	     }
通过查询资料发现还有一些其他原因导致这个问题
(1)版本问题,需要修改成
  if(android.os.Build.VERSION.SDK_INT >= 4.2){
	         DATA_PATH= context.getApplicationInfo().dataDir+"/databases/video.db";        
		    } else {
	         DATA_PATH="/data/data/"+ApplicationUtil.getcontext().getPackageName()+"/databases/video.db";
		  }
            SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DATA_BASE_PATH,null);
(2)包名错误
 DATA_PATH="/data/data/"+ApplicationUtil.getcontext().getPackageName()+"/databases/video.db";

如果大家发现其他原因和解决方法的欢迎共享.

你可能感兴趣的:(Android实践与思索)