在学习和使用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";