超级初学者。
我已经创建了一个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();
}
答案 0 :(得分:3)
你不应该依赖"数据/数据"因为它可能会改变,或者它可能在某些设备上不起作用,getDatabasePath (String name)
将始终返回正确的路径,文档说
返回使用openOrCreateDatabase创建数据库的文件系统的绝对路径
答案 1 :(得分:1)
答案 2 :(得分:1)
我知道已经晚了
首先使用此依赖项
compile 'com.ajts.androidmads.sqliteimpex:library:1.0.0'
并使用此代码导出数据库
public static boolean exportDb(Context context, String databaseName) {
File dbDir = new File(Environment.getExternalStorageDirectory(),"your_path");
if (!dbDir.exists())
{
dbDir.mkdirs();
}
SQLiteImporterExporter sqLiteImporterExporter = new SQLiteImporterExporter(context, databaseName);
try {
sqLiteImporterExporter.exportDataBase(Environment.getExternalStorageDirectory()+"your_path");
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
答案 3 :(得分:0)
我同意I1nuxuser。这是另一个参考:https://github.com/jgilfelt/android-sqlite-asset-helper