сбой на устройстве - PullRequest
       2

сбой на устройстве

0 голосов
/ 21 декабря 2011

У меня есть приложение, которое я использую базу данных для вставки значений в виде списка.Когда я запускаю приложение на эмуляторе после слияния, оно работает нормально, но вылетает на устройстве, когда начинаются вставленные значения, LogCat показывает мне курсор: close, но я уже закрыл все открываемые курсоры.это действие кнопки

plus.setOnClickListener(new View.OnClickListener() {


    public void onClick(View v) 
    {

        tx = txt.getText().toString();
        postive.add(tx);
        if(tx.length() >0)
        {
            myDB.execSQL("INSERT INTO UP (ID,UPNAME) VALUES ('"+idnum+"','"+tx+"')");

            txt.setText("");            
            function();
             results.clear();
            Intent i=new  Intent(Positive.this,NewgridActivity.class);
            bundle.putInt("tabid", 1);
            bundle.putInt("id", idnum);
            i.putExtras(bundle);
            startActivity(i);
            finish();
        }
        else
            DisplayToast("TextField Empty !!!!");

    }
});

любая помощь, пожалуйста.

ошибка в logcat

12-21 13:11:02.582: E/Database(4909): close() was never explicitly called on database '/data/data/pa.gd/databases/DECISION_GRID' 
12-21 13:11:02.582: E/Database(4909): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
12-21 13:11:02.582: E/Database(4909):   at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
12-21 13:11:02.582: E/Database(4909):   at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
12-21 13:11:02.582: E/Database(4909):   at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
12-21 13:11:02.582: E/Database(4909):   at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
12-21 13:11:02.582: E/Database(4909):   at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
12-21 13:11:02.582: E/Database(4909):   at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
12-21 13:11:02.582: E/Database(4909):   at pa.gd.PAIDGRIDActivity.onCreate(PAIDGRIDActivity.java:66)
12-21 13:11:02.582: E/Database(4909):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-21 13:11:02.582: E/Database(4909):   at dalvik.system.NativeStart.main(Native Method)

ошибка журнала после закрытия базы данных

я закрылдБ, когда я тогда пытаюсь добавить значение ia, он падает с этой ошибкой журнала

12-21 15:45:58.043: E/AndroidRuntime(401): FATAL EXCEPTION: main
12-21 15:45:58.043: E/AndroidRuntime(401): java.lang.IllegalStateException: database not open
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1723)
12-21 15:45:58.043: E/AndroidRuntime(401):  at dc.grd.Positive$1.onClick(Positive.java:77)
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.view.View.performClick(View.java:2408)
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.view.View$PerformClick.run(View.java:8816)
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.os.Handler.handleCallback(Handler.java:587)
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.os.Looper.loop(Looper.java:123)
12-21 15:45:58.043: E/AndroidRuntime(401):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-21 15:45:58.043: E/AndroidRuntime(401):  at java.lang.reflect.Method.invokeNative(Native Method)
12-21 15:45:58.043: E/AndroidRuntime(401):  at java.lang.reflect.Method.invoke(Method.java:521)
12-21 15:45:58.043: E/AndroidRuntime(401):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-21 15:45:58.043: E/AndroidRuntime(401):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-21 15:45:58.043: E/AndroidRuntime(401):  at dalvik.system.NativeStart.main(Native Method)

Ответы [ 2 ]

0 голосов
/ 28 декабря 2011

Похоже, вы используете myDB для вашего объекта базы данных. В этом случае используйте это, чтобы закрыть его: myDB.close () ;. - Сандер ван Вир <</p>

  1. myDB.close (); решение от Сандера Ванта Веера сработало
0 голосов
/ 21 декабря 2011

Подумайте о жизненном цикле подключения к базе данных.Я рекомендую открыть базу данных в вашем классе приложения или в методе onResume() вашей деятельности.Закройте базу данных в onPause().

Всякий раз, когда вы работаете с базой данных, убедитесь, что все курсоры правильно закрыты после того, как вы закончили с ней работать.

И, кстати: каждый развы напишите название вопроса, как вы, котенок умирает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...