Java Android无法打开现有的SQLite数据库文件
我有一个SQLite数据库文件,使用Sqliteman管理实用程序创建。我将创建的数据库文件复制到Eclipse项目的“资产”文件夹中(是否应该导出到.sql文件?) 因此,在代码中,我创建了自己的类,用于打开和使用现有文件路径中的数据库。以下是相关代码:Java Android无法打开现有的SQLite数据库文件,java,android,sql,database,sqlite,Java,Android,Sql,Database,Sqlite,我有一个SQLite数据库文件,使用Sqliteman管理实用程序创建。我将创建的数据库文件复制到Eclipse项目的“资产”文件夹中(是否应该导出到.sql文件?) 因此,在代码中,我创建了自己的类,用于打开和使用现有文件路径中的数据库。以下是相关代码: private static String DB_FULL_PATH_EXISTING = "/data/data/com.jds.databasetest/databases/Book1"; 其中com.jds.database
private static String DB_FULL_PATH_EXISTING = "/data/data/com.jds.databasetest/databases/Book1";
其中com.jds.databasetest是我的包名,Book1是资产文件夹中数据库文件的名称。现在在一些活动中:
SQSimple existingDB = new SQSimple(this, "Book1", DB_FULL_PATH_EXISTING);
existingDB.open();
SQSimple是我的自定义DB类。以下是相关的构造函数代码:
public SQSimple(Context c, String DBname, String existingDBpath) {
this.mCtx = c;
this.DBname = DBname;
this.DBpath = existingDBpath;
this.fromExisting = true;
}
public SQSimple open() throws android.database.SQLException {
if (this.fromExisting == false) {
dbHelper = new DatabaseHelper(this);
db = dbHelper.getWritableDatabase();
return this;
} else { //opening from existing DB, i.e. this code gets run
db = SQLiteDatabase.openDatabase(this.DBpath, null, SQLiteDatabase.OPEN_READWRITE);
return this;
}
}
因此,试图通过existingDB.open()打开数据库会导致应用程序崩溃。Logcat说:
E/Database(13144): sqlite3_open_v2("/data/data/com.jds.databasetest/databases/Book1", &handle, 2, NULL) failed
希望我所做的是非常明确的,我遗漏了一些非常明显的东西
非常感谢您的帮助。我不太确定,但您可能需要参考数据
File data = Environment.getDataDirectory();
我不太确定,但也许你需要一个数据参考
File data = Environment.getDataDirectory();
我不知道那会有什么帮助。我一直在下面的例子中使用文件路径作为数据库的字符串:是的,我只记得当将数据库从Data备份到SD时,您将需要该引用,对不起。祝你好运。我不知道那会有什么帮助。我一直在下面的例子中使用文件路径作为数据库的字符串:是的,我只记得当将数据库从Data备份到SD时,您将需要该引用,对不起。祝你好运。另外,我想补充一点:我不确定在我的情况下,如此常用的dbHelper将用于什么目的。我有文件路径。。。我能不能用SQLiteDatabase.openDatabase()打开这个东西?另外,我想补充一点:我不确定在我的情况下,如此常用的dbHelper是做什么用的。我有文件路径。。。我能不能用SQLiteDatabase.openDatabase()打开这个东西?