Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从未对数据库调用Close()_Java_Android_Database_Sqlite - Fatal编程技术网

Java 从未对数据库调用Close()

Java 从未对数据库调用Close(),java,android,database,sqlite,Java,Android,Database,Sqlite,在我在微调器上检索到所选值后,我尝试关闭光标,看看这是否有帮助,但没有。由于我的微调器依赖于其他微调器来获得正确的值,因此会使我的应用程序崩溃,因为关闭光标后没有值 只有当API为时,才会发生这种情况。我使用它来使用现有数据库工作。在使用了教程中用户评论的一些提示后,我开始收到Close()从未在数据库错误时被调用的消息 在注意了我的日志之后,我找到了解决方法。我没有在我的createDatabase()和我的copyDatabase()中关闭数据库。我不确定我添加到代码中的修复是否会在将来给我

在我在微调器上检索到所选值后,我尝试关闭光标,看看这是否有帮助,但没有。由于我的微调器依赖于其他微调器来获得正确的值,因此会使我的应用程序崩溃,因为关闭光标后没有值

只有当API为时,才会发生这种情况。我使用它来使用现有数据库工作。在使用了教程中用户评论的一些提示后,我开始收到Close()从未在数据库错误时被调用的消息

在注意了我的日志之后,我找到了解决方法。我没有在我的
createDatabase()
和我的
copyDatabase()
中关闭数据库。我不确定我添加到代码中的修复是否会在将来给我带来其他问题,但在我的应用程序支持的API上进行测试时,我没有收到任何错误

这是我添加到代码中的内容,以使其在没有任何错误的情况下工作:

而不是
this.getWritableDatabase()
createDatabase()
中,我使用了
this.getWritableDatabase().close()

我补充说

if(myDatabase != null)
{
    myDatabase.close();
}

在我的try/catch中,在
checkdb=SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN\u READWRITE)下
copyDatabase()

为什么投反对票?没有解决方案张贴在这里帮助我。如果你反对投票,请解释。
@Override
public void close() {

if(myDataBase != null){
    myDataBase.close();
}
}
06-13 15:18:36.256: E/SQLiteDatabase(736): close() was never explicitly called on database '/data/data/com.example.productguide/databases/products.db' 
06-13 15:18:36.256: E/SQLiteDatabase(736): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1980)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:977)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1021)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:745)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:149)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at com.example.productguide.DataBaseHelper.createDataBase(DataBaseHelper.java:146)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at com.example.productguide.ProductActivity.onCreate(ProductActivity.java:83)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.Activity.performCreate(Activity.java:4397)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.ActivityThread.access$500(ActivityThread.java:122)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.os.Looper.loop(Looper.java:132)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at android.app.ActivityThread.main(ActivityThread.java:4123)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at java.lang.reflect.Method.invokeNative(Native Method)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at java.lang.reflect.Method.invoke(Method.java:491)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-13 15:18:36.256: E/SQLiteDatabase(736):  at dalvik.system.NativeStart.main(Native Method)
if(myDatabase != null)
{
    myDatabase.close();
}