База данных закрывается сама по себе

Это произошло впервые, как только я закончил с выполнением запросов, соединение с базой данных закрывается. В следующем коде, сразу после первого цикла, когда я пытаюсь выполнить больше запросов, я получаю сообщение о том, что соединение с базой данных уже закрыто. Если я вручную снова открою базу данных, тогда код будет работать нормально, т. Е. Запросы выполняются без каких-либо ошибок.

Почему база данных закрывается, когда я этого не делаю?

openDB() и closeDB() открывают и закрывают соединение с базой данных.

Код: http://pastie.org/5587804#32,34

public void insertCheckedValuesInTable(int test_id,
            ArrayList> checkedValues) {
       //TODO Auto-generated method stub
        openDB();
       //first collect all the values then insert
       //insert test_id, Q_id , correct answer and submitted answer in table
       //testAnswerSubmitted

        for (int i = 0; i < checkedValues.size(); i++) {
            int Q_id = getQ_id(checkedValues.get(i).get(0).toString().trim());
            String correctAns = getCorrectAnswer(
                    test_id,
                    Integer.parseInt(checkedValues.get(i).get(0).toString()
                            .trim()));
            String submittedAns = checkedValues.get(i).get(1).toString().trim();
            int marksObt;
            Log.e("value " + i, correctAns.equalsIgnoreCase(submittedAns) + "");
           //get marks
            if (correctAns.equalsIgnoreCase(submittedAns)) {
               //= marks for this question;
                Cursor cur = myDataBase.rawQuery(
                        "(SELECT Marks FROM testQuestionBank WHERE Test_id ="
                                + test_id + " AND Q_id = " + Q_id + ")", null);
                cur.moveToFirst();
                marksObt = Integer.parseInt(cur.getString(0));
                cur.close();
            } else {
                marksObt = 0;
            }
           //done collecting all values, insert in db now

            Log.e("database state", myDataBase.isOpen() + "");

            openDB();

            String sql = "Insert INTO testAnswerSubmitted (Test_id, Q_id, CorrectAnswer, SubmittedAnswer, MarksObtained) VALUES ( "
                    + test_id
                    + ", '"
                    + Q_id
                    + "', '"
                    + correctAns
                    + "', '"
                    + submittedAns + "', '" + marksObt + "') ";
            myDataBase.execSQL(sql);
            Log.v("Executed", sql);
        }
        closeDB();
    }

openDB ():

public void openDB() {
        try {
            createDataBase();
        } catch (IOException e) {
           //TODO Auto-generated catch block
            Log.e("DataBaseHelper", e.toString());
        }

        openDataBase();
        getWritableDatabase();

    }

где createDatabase ():

public void createDataBase() throws IOException {

        boolean dbExist = checkDataBase();

        if (dbExist) {
           //do nothing - database already exist
        } else {

           //By calling this method and empty database will be created into
           //the default system path
           //of your application so we are gonna be able to overwrite that
           //database with our database.
           //this.getReadableDatabase();//changed to write
            this.getWritableDatabase();

            try {

                copyDataBase();

            } catch (IOException e) {

                throw new Error("Error copying database");

            }
        }

    }

closeDB ():

@Override
    public synchronized void close() {

        if (myDataBase != null)
            myDataBase.close();

        super.close();

    }
0
nl ja de
Почему вы дважды открываете базу данных? Просто любопытно.
добавлено автор Ewald, источник
@AyushGoyal я вижу - интересно - может ли это быть курсором, который затягивает? Или ваша база данных закрывается, как только нет никаких связей с ней?
добавлено автор Ewald, источник
Любая удача, когда вы не закрываете курсор, как @PradeepSimha?
добавлено автор Ewald, источник
Было бы лучше, если бы вы размещали здесь только код, а не ссылку на другое место, потому что он помогает будущему посетителю, и в этом случае эта ссылка может устареть.
добавлено автор Pradeep Simha, источник
Не могли бы вы сообщить нам код в closeDB() и openDB ()?
добавлено автор Pradeep Simha, источник
Также мало сомневаетесь, почему вы дважды открываете db?
добавлено автор Pradeep Simha, источник
Я думаю, что где-то вы вызываете close() в getWritableDatabase (); ??
добавлено автор Pradeep Simha, источник
@AyushGoyal cur.close (); эта строка может быть проблемой, попробуйте прокомментировать ее и снова запустить
добавлено автор Pradeep Simha, источник
@PradeepSimha. Я не могу выделить интересующие вас строки, вот почему они не вставлялись сюда. Отредактировано.
добавлено автор Ayush Goyal, источник
@Ewald Вот почему я спрашиваю об этом, db закрывается там, поэтому я открыл его снова, и он отлично работает, но почему?
добавлено автор Ayush Goyal, источник
@PradeepSimha добавил еще код.
добавлено автор Ayush Goyal, источник
@PradeepSimha Как раз над вторым openDB() в журнале я закрываю состояние, поэтому я добавил еще один openDB (), чтобы просто заставить код работать. Я хочу знать, почему состояние базы данных закрыто на этом этапе
добавлено автор Ayush Goyal, источник
прокомментировал cur.close, но все же состояние закрыто
добавлено автор Ayush Goyal, источник
Что находится в методах open/close? Второй открытый метод может закрыть базу данных для всего, что мы знаем?
добавлено автор Martin Nielsen, источник
Я не могу найти фрагмент кода, в котором вы действительно открываете соединение с sqlite и передаете ссылку на свою переменную myDataBase, которую вы используете в методе closeDB() и в вашей строке кода Log.e. Кроме того, ваш метод openDB() не является тривиальным, поскольку там происходит много всего. Поэтому, чтобы найти проблему, я бы переместил вашу строку кода Log.e и попытался найти место, где вы фактически потеряете свое соединение с db. Например, вы можете проверить, есть ли у вас соединение после первого оператора openDB() и т. Д.
добавлено автор joel, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async

Android Rus
Android Rus
68 участник(ов)