Android Sqlite Failed to open database(无法打开数据库文件)
16lz
2021-01-23
在学习和使用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):
如果大家发现其他原因和解决方法的欢迎共享.
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 Studio的Gradle错误解决方法
- Android NDK常见错误解决方案
- Android Permission denied 错误
- Android集成银联支付,提示java.lang.UnsatisfieldLinkError错误
- android修改Zxing源码,避免出现错误信息
- Android Studio 3.1.1新版本 修改 compileSdkVersion sdk版本的
- android webview 加载进度和自定义404错误页面
- android编译错误
- android 源代码错误