我想为我的Android应用预先创建数据库。我使用“SQLite数据库浏览器”,在创建我的数据库之后,我将数据库复制到app文件夹“databases”。在我的应用程序方面,我添加了写入SD卡(如果需要)的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我打开数据库的代码是:
String myPath = getApplicationContext().getFilesDir().getAbsolutePath().replace("files","databases")+ File.separator + "mydb.db";
db = SQLiteDatabase.openOrCreateDatabase(myPath, null);
Android无法打开我的数据库并显示此错误:
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
我尝试了以下内容:
我已使用此SQL语句从“SQLite数据库浏览器”添加“android_metadata”表:
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');
INSERT INTO "android_metadata" VALUES ('en_US')
我已经尝试从android中删除我的数据库文件并运行我的应用程序以检查代码是否可以创建具有此名称的数据库,所有它没关系,dabase创建没有任何问题,之后我再次运行我的应用程序检查它是否可以打开数据库并打开没有问题。我已经用android代码创建了我需要它的所有表格,并且在成功创建数据库之后,我已将此文件复制回Windows并使用“SQLite数据库浏览器”打开以将少量数据插入表中并在保存更改后,再次复制回android,但我的应用程序无法再次打开它!
我很困惑,问题出在哪里?为什么我尝试使用“SQLite数据库浏览器”编辑或创建数据库 android它无法打开它?
抱歉我的英文......
*“SQLite数据库浏览器”版本为3.9.1
答案 0 :(得分:0)
请确保您的文件路径为空。首先,在打开后检查它
String myPath = getApplicationContext().getFilesDir().getAbsolutePath().replace("files","databases")+ File.separator + "mydb.db";
File file = new File(myPath);
if (file.exists() && !file.isDirectory())
{
db = SQLiteDatabase.openOrCreateDatabase(myPath, null);
}
else
{
Log.i(TAG, "Database file not found");
}