如何解决android studio sqlite未调用显式终止方法“关闭”
我有一个带有 Sqlite 数据库的 android 应用程序,但在执行查询时出现错误。
这是我的查询函数
public String SaberIdiomaEscolhido() {
try {
fechar();
abrir();
String sql = "Select Idiomas.Id from Idiomas where Idiomas.Selecionado == 1";
Cursor c = this.db.rawQuery(sql,null);
String Dados = "";
c.moveToFirst();
while (!c.isAfterLast()) {
Dados = c.getString(c.getColumnIndex("Id"));
c.moveToNext();
}
c.close();
fechar();
return Dados;
} catch (Exception e) {
return null;
}
}
但是在“c.moveToFirst();”行上,我收到此错误:
> 2021-02-15 10:06:38.941 10512-10521/? E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:223)
at android.database.CursorWindow.<init>(CursorWindow.java:111)
at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:138)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:132)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:258)
at com.aquarismo.BaseDados.SaberIdiomaEscolhido(BaseDados.java:3791)
at com.aquarismo.MainActivity.defenirIdioma(MainActivity.java:3297)
at com.aquarismo.MainActivity.onCreate(MainActivity.java:2341)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
你能帮我吗?我不知道为什么会出现这个错误,因为我在所有其他函数中都有 c.close()。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。