在我的Android活动中,我需要从数据库中读取东西。我已经创建了一个帮助类来处理我的数据库访问。这个助手类有几种不同的方法,设计它们可以读取不同的东西并返回它们,而不太费事。以下是一个例子。
public String GetName(int id)
{
String toReturn = null;
Cursor cursor = null;
try
{
cursor = db.query(TABLE_NAME,
new String[] {"name"},
"id = " + id,
null,
null,
null,
null,
null);
assert(cursor.getCount() == 1);
cursor.moveToFirst();
toReturn = new String(cursor.getString(0));
}
finally
{
if(cursor != null)
cursor.close();
}
return toReturn;
}我一直在犯错误
10-10 15:52:18.991: W/SQLiteCompiledSql(28313):在终结器中释放语句。请确保在游标上显式调用close():从android.database.sqlite.DatabaseObjectNotClosedException:中选择名称,其中id =0 10-10 15:52:18.991: W/SQLiteCompiledSql(28313):android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭在这里打开的游标或数据库对象
使用堆栈跟踪,该跟踪直接指向此函数(以及与其非常相似的),尽管该活动运行良好。我做错了什么?我在这里查看了一段时间,然后添加了try/ for,以确保始终关闭游标,但仍然会收到错误。我怎么才能解决这个问题?
发布于 2012-11-03 08:17:10
您正在正确地关闭游标,但也需要关闭数据库,请确保您正在关闭数据库:
if(db.isOpen()) db.close();https://stackoverflow.com/questions/12829917
复制相似问题