Android 这是导入预制数据库并打开和关闭的正确方法吗?
好的,我在这里使用本教程创建了一个预制数据库。我一直收到关于“数据库未关闭异常”的错误。还有一些错误转到我的openDatabase。我的数据库类有什么问题吗Android 这是导入预制数据库并打开和关闭的正确方法吗?,android,android-sqlite,Android,Android Sqlite,好的,我在这里使用本教程创建了一个预制数据库。我一直收到关于“数据库未关闭异常”的错误。还有一些错误转到我的openDatabase。我的数据库类有什么问题吗 public void openDataBase() throws SQLException{ //Open the database String myPath = DB_PATH + DB_NAME; myDatabase = SQLiteDataba
public void openDataBase() throws SQLException{
//Open the database
String myPath = DB_PATH + DB_NAME;
myDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}
//*Kalikot Delete pag may problema*//
public DbHerbs openWritable()throws SQLException{
// ourHelper = new DbHelper(ourContext);
myDatabase = this.getWritableDatabase();
return this;
}
public DbHerbs openReadOnly()throws SQLException{
myDatabase = this.getReadableDatabase();
return this;
}
public void close() {
if (myDatabase != null) {
myDatabase.close();
}
// super.close();
}
下面是我如何在不同片段上打开类
private void openDb() {
myDb = new DbHerbs(this.getActivity());
try {
myDb.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDb.openReadOnly();
}catch(SQLException sqle){
throw sqle;
}
private void closeDb()
{
myDb = new DbHerbs(this.getActivity());
myDb.close();
}
这就是我在日志上看到的错误。
此处不关闭数据库:
private void closeDb()
{
myDb = new DbHerbs(this.getActivity());
myDb.close();
}
您正在用新实例替换现有数据库实例并关闭该新实例。旧的将在其处于打开状态时被垃圾收集。所以实际上closeDb()什么都不做
为什么每次需要对数据库进行读取访问时都要尝试创建数据库实例
private void openDb() {
myDb = new DbHerbs(this.getActivity());
try {
myDb.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDb.openReadOnly();
}catch(SQLException sqle){
throw sqle;
}
如果您试图跨放置在“资产”文件夹中的预制数据库进行复制,建议的方法是
当您需要读取或写入数据库时,应该在SQLiteOpenHelper上调用和getWritableDatabase()。您将在android示例中找到完整的工作代码。您忘记了创建表。它是预先制作的,表已经创建,数据库导入到资产文件夹中。这是大量代码,而且组织得不是很好。。。我在遵循简单用例的程序流程时遇到了问题。编辑:虽然现在是星期一上午9点,但我还是把它全部写了下来,只是为了确定。xD问题是我打开数据库的部分。xD不确定这是否正确。如果您要查找的是代码审阅,请在代码审阅堆栈上发布。谢谢。:)帮助很多,所以在我的主要活动开始创建时,我只需要使用open一次?并且只使用我在oncreate上创建的实例调用getReadableDatabase()和getWriteableDatabase()?