2011-09-01 121 views
0

我已经越来越此异常,DatabaseObjectNotClosedException:如何解决这个异常?

close() was never explicitly called on database '/data/data/com.project.test/databases/database' 
E/SQLiteDatabase(13921): android.database.sqlite.DatabaseObjectNotClosedException:   
Application did not close the cursor or database object that was opened here 

我试图关闭数据库助手和游标,但我会得到运行时异常。当我离开活动并在点击后退按钮后重新访问它时,会发生这种情况。

如何正确关闭我的游标和助手?

我已经尝试了两种方法:

首先,关闭游标每一个人使用后,在onPause和关闭数据库帮手。

秒,随着数据库帮助关闭游标onpause,但都没有奏效。

有人可以帮助我吗?

编辑:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    activity = this.getActivity(); 
    context = this.getActivity().getApplicationContext(); 
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mDbHelper = new DatabaseHelper(context); 
    mDbHelper.open(); 
    populateList(); 
} 

public void populateList() { 
    directoryCursor = mDbHelper.fetchAllRootDirectories(); 
    activity.startManagingCursor(directoryCursor); 

    adapter = new DirectoryListAdapter(this.getActivity(), directoryCursor); 
    this.setListAdapter(adapter); 
} 

       ...... 


private UpdateDatabaseListener updateDatabaseListener = new UpdateDatabaseListener() { 

    public void onUpdate(int from, int to) { 

       ..... 

     findExistingRecordCursor = mDbHelper.findExistingRecords(from, to); 
     activity.startManagingCursor(findExistingRecordCursor); 
     if(findExistingRecordCursor.getCount() == 0) { 

       .... 

      } 

    } 
} 

我在OnCreate()函数打开的数据库帮手。 填充列表视图时使用的游标, 用于查找现有记录的游标, 游标以获取信息。


UPDATE:

我试图关闭的onPause和的onDestroy,但它仍然与RuntimeException的崩溃。

+1

能否请您发布您的代码 – Gaurav

+0

@Gaurav这部分的代码,你真正需要看到的?因为它确实有很多代码。我可以看到我可以粘贴什么。 –

+0

@Gaurav我写下我在那里用databasehelper和游标 –

回答

0

是否关闭SQLiteDatabase对象?如果不尝试关闭SQLiteDatabase对象这样

  1. SQLiteDatabase DB = SQLiteHelper classobject.getWriteableDatabase();

  2. //的代码块

  3. db.close();

并运行您的应用程序。

请问您可以发布您的代码,以便更好地了解您的问题。

+0

感谢您的回复,我在问题中添加了一些信息。我试着在onPause()方法上关闭我的光标。当我离开另一个活动并点击后退按钮时。它会引发一个运行时异常。 –

+0

如果我不收的话,那就不会有比其他DatabaseObjectNotClosedException任何问题。 –

+0

尽量把datbase助手在主活动类转移到延伸SQLiteOpenHelper一个新的活动,然后实例化SQLiteHelper。这是我的想法,但我不确定它是否会起作用。 – Rocker

0

对不起,延迟回复。 () 从我看到的,你已经打开db使用 mDbHelpher.open() 之后,你确实populatelist() 你尝试之后做mDbHelpher.close()?

与光标相同的东西。因为你的错误清楚地表明数据库或光标处于打开状态。 只要你完成使用数据库,你应该关闭。即使在您访问其他活动并按下返回按钮后,这也不应该出现问题。

此外,你说你关闭数据库或光标时得到运行时异常。它是相同的异常还是不同的?

相关问题