【发布时间】:2014-05-11 11:41:18
【问题描述】:
这里是超级初学者。
我创建了一个 SQLite 数据库,我想使用 SQLiteManager 插件查看它,但我的数据库没有在我的(虚拟)设备上添加 .db 扩展名。到目前为止,我必须将文件复制到我的计算机上,更改扩展名,然后将其推回以启用 SQLiteManager 图标。然后我就可以看到数据库了。
我怎样才能避免这种跑路?
另外,有人提到我不应该依赖“/data/data/”作为正确的路径。他们建议我使用Context.openOrCreateDatabase 或get*Path 或get*Dir 方法之一。有人可以详细说明这些吗?我使用的代码来自我看到的一个 Youtube 教程。
这是定义路径的代码:
try {
String destPath = "/data/data/" + getPackageName() + "/databases/GradesDB.db";
File f = new File(destPath);
if(!f.exists()) {
CopyDB( getBaseContext().getAssets().open("mydb"),
new FileOutputStream(destPath));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
【问题讨论】:
-
您是否正在扩展 SQLiteOpenHelper 来创建您的数据库?如果是这样,您应该在构造函数中提供一个数据库名称,只需在该名称的末尾附加“.db”即可。
-
“我使用的代码来自我看到的一个 Youtube 教程。”:哎呀!需要记住的一件事 - 任何人 都可以制作视频并将其发布到 YouTube - 这并不意味着他们对自己在做什么一无所知。该代码在几个方面是错误的。切勿对文件系统路径进行硬编码(Android 设备制造商可以选择使用不同的目录结构)。此外,除非您有特定要求(并且知道其含义),否则您很少会使用
getBaseContext()。 -
谢谢,@panini!让数据库可以访问就是这么简单。还有@Squonk,我试图弄清楚为什么教程仍然包含这段代码。它到底有什么作用,有什么更好的方法?
标签: android sqlite file-management