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

来源(CSDN博客)

From: https://blog.csdn.net/u010228448/article/details/52789217

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

原创 2016年10月11日 16:51:16 标签:Android /sqlite 3545

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


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

Link: http://www.asm32.net/article_details.aspx?id=7296


浏览次数 0 发布时间 2018/4/14 23:20:11 从属分类 Android 安卓 【评论】【 】【打印】【关闭
 
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | Python | 书签 | ASP.Net书签 | 京ICP备09029108号-1