Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/43: Рейтинг темы: голосов - 43, средняя оценка - 4.84
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212

"Attempt to re-open an already-closed object" при работе с SQLite

09.04.2015, 18:03. Показов 9716. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Разрабатываю приложение и столкнулся с проблемой... Лог выдаёт вот такое:

FATAL EXCEPTION: main
java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase:

Понапихал Log.v всюду, чтобы разобраться, но ни как, мой уровень не позволяет.
Ясное дело гуглил, но либо я дурак, либо лыжи... Так что взываю о помощи к вам. В заранее спасибо.


Та самая проблемная активити.
EventActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
 
        Log.v(TAG, "ОТКРЫВАЕМ ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ" );
 
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        Log.v(TAG, "ОК- ОТКРЫЛИ" );
 
        // РАСКРЫВАЮЩИЕСЯ СПИСОКИ
 
        edtMan = (Spinner) findViewById(R.id.ManSpinner);
        edtET = (Spinner) findViewById(R.id.ETSpinner);
        edtMeet = (Spinner) findViewById(R.id.MeetingSpinner);
 
        //СПИНЕРЫ MAN - EVENT TYPE - MEET
        CreatNewSpinnerFU("man", "name", edtMan);
        CreatNewSpinnerFU("event_type", "name", edtET);
        CreatNewSpinnerFU("meeting", "name", edtMeet);
 
 
        checkboxEvent = (CheckBox) findViewById(R.id.checkBox);
 
        Log.v(TAG, "ЖДЁМ 'ТЫК' КНОПКИ" );
 
        btnEvent  = (Button) findViewById(R.id.new_event_in_tab);
        btnEvent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Do something in response to button click
 
                boolean checkMan= !true,
                        checkET = !true,
                        checkMeet = !true;
 
                Log.v(TAG, "ТЫК!" );
 
                //checkMan = !true; checkET = !true; checkMeet = !true;
 
                Log.v(TAG, "РАБОТАЕ С МАНАМИ --- if (edtMan.getSelectedItem() != null) ---" );
 
                if (edtMan.getSelectedItem() != null)
                {
                    Log.v(TAG, "----if МЫ ВНУТРИ  -----" );
                    Log.v(TAG, "----if -----   checkMan = true;" );
                    checkMan = true;
                    Log.v(TAG, "----if -----   checkMan = true;-- ОК" );
 
 
                    Log.v(TAG, "----if----- ПРИСВАИВАЕМ КУРСОРУ  cur = db.GetCatalogValueByName(.........);" );
                    cur = db.GetCatalogValueByName("man", "_id", "name", edtMan.getSelectedItem().toString());
                    Log.v(TAG, "----if----- ПРИСВАИВАЕМ КУРСОРУ  cur = db.GetCatalogValueByName(.........);-------ОК" );
 
                    Log.v(TAG, "----if-----   ПРИСВАИВАЕМ _id ---- cManID = cur.getInt(...._id\")-----" );
                    cManID = cur.getInt(cur.getColumnIndex("_id"));
                    Log.v(TAG, "----if-----   ПРИСВАИВАЕМ _id ---- cManID = cur.getInt(...._id\")-----ОК" );
                    //db.addRec("event", DB.EVENT_COLUMN_MAN, cManID );
                }
 
                Log.v(TAG, "РАБОТАЕ С EВЕНТ ТАЙПОМ --- if (edtET.getSelectedItem() != null) ---" );
                if (edtET.getSelectedItem() != null)
                {
                    checkET = true;
                    cur = db.GetCatalogValueByName("event_type", "_id", "FullName", edtET.getSelectedItem().toString());
                    cETID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID );
                }
 
                Log.v(TAG, "РАБОТАЕ С МИТОМ --- if (edtMeet.getSelectedItem() != null) ---" );
                if (edtMeet.getSelectedItem() != null)
                {
                    checkMeet = true;
                    cur = db.GetCatalogValueByName("event_type", "_id", "FullName", edtMeet.getSelectedItem().toString());
                    cMeetID = cur.getInt(cur.getColumnIndex("_id"));
                    //db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID );
                }
 
                Log.v(TAG, "ПРОВЕРЯЕМ ФЛАГИ НА 'TRUE' ПОСЛЕ ПИШЕМ В ТАБЛИЦУ 'event' --- if(checkMan != false & checkET != false & checkMeet != false) ---" );
 
                //Если все значения true, то записываем данные в таблицу "event"
                if(checkMan != false & checkET != false & checkMeet != false){
 
                    Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec(\"event\", DB.EVENT_COLUMN_MAN, cManID ); ---" );
                    db.addRec("event", DB.EVENT_COLUMN_MAN, cManID );
                    Log.v(TAG, "ОК" );
 
                    Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec(\"event\", DB.EVENT_COLUMN_EVENT_TYPE, cETID ); ---" );
                    db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID );
                    Log.v(TAG, "ОК" );
 
                    Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ЧЕКБОКСИКА ---- ---" );
                    db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID );
 
                    if (checkboxEvent.isChecked() == true) {
                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 1 );
                        Log.v(TAG, "ОК---1" );
 
                    }else {
                        db.addRec("event", DB.EVENT_COLUMN_VALUE, 0 );
                        Log.v(TAG, "ОК---0" );
                    }
 
                }
 
 
            }
        });
        db.close();
    }
//СОЗДАНИЕ SPINNER
    public void CreatNewSpinnerFU(String name_table, String name_column, Spinner qwerty) {
        List ListArray = new ArrayList();
        Cursor Post = db.GetCatalogByName(name_table);
        Post.moveToFirst();
 
        if (Post != null && Post.getCount() > 0) {
            do {
                ListArray.add(Post.getString(Post.getColumnIndex(name_column)));
            } while (Post.moveToNext());
 
            ArrayAdapter dataAdapterPost = new ArrayAdapter(this, android.R.layout.simple_spinner_item, ListArray);
            dataAdapterPost.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            qwerty.setAdapter(dataAdapterPost);
        }
    }

Класс с базой данных.
BD.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
public class DB {
 
    private static final String TAG = "DB__ACTIVITY";
 
 
    private static final String DB_NAME = "Allreg";
    private static final int DB_VERSION = 1;
    //man
    private static final String DB_TABLE = "man";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "name";
 
    private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_NAME + " text" +
                    ");";
 
    //event type
    private static final String EVENT_TYPE_TABLE = "event_type";
    public static final String EVENT_TYPE_COLUMN_ID = "_id";
    public static final String EVENT_TYPE_COLUMN_NAME = "name";
 
    private static final String EVENT_TYPE_DB_CREATE =
            "create table " + EVENT_TYPE_TABLE + "(" +
                    EVENT_TYPE_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_TYPE_COLUMN_NAME + " text" +
                    ");";
 
    //meeting
    private static final String MEETING_TABLE = "meeting";
    public static final String MEETING_COLUMN_ID = "_id";
    public static final String MEETING_COLUMN_NAME = "name";
 
    private static final String MEETING_DB_CREATE =
            "create table " + MEETING_TABLE + "(" +
                    MEETING_COLUMN_ID + " integer primary key autoincrement, " +
                    MEETING_COLUMN_NAME + " text" +
                    ");";
 
    //event
    private static final String EVENT_TABLE = "event";
    public static final String EVENT_COLUMN_ID = "_id";
    public static final String EVENT_COLUMN_MAN = "ManId";
    public static final String EVENT_COLUMN_MEETING = "MeetingId";
    public static final String EVENT_COLUMN_EVENT_TYPE = "EventTypeId";
    public static final String EVENT_COLUMN_VALUE = "Value";
 
    private static final String EVENT_DB_CREATE =
            "create table " + EVENT_TABLE + "(" +
                    EVENT_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_COLUMN_MAN + " integer" +
                    EVENT_COLUMN_MEETING + " integer" +
                    EVENT_COLUMN_EVENT_TYPE + " integer" +
                    EVENT_COLUMN_VALUE + " integer" +
                    ");";
 
    private final Context mCtx;
 
 
    private DBHelper mDBHelper;
    private SQLiteDatabase mDB;
 
    public DB(Context ctx) {
        mCtx = ctx;
    }
 
    // открыть подключение
    public void open() {
        mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
        mDB = mDBHelper.getWritableDatabase();
    }
 
    // закрыть подключение
    public void close() {
        if (mDBHelper!=null) mDBHelper.close();
    }
 
    // получить все данные из таблицы DB_TABLE
    public Cursor getAllData(String name_DB) {
        String str = name_DB;
        return mDB.query(str, null, null, null, null, null, null);
    }
 
    // удалить запись из DB_TABLE
    //-----------------------------------поправить работу с _id
    public void delRec(String name_DB , String column_id , long id) {
        String str = name_DB;
        String col_id = column_id;
        mDB.delete(name_DB, col_id + " = " + id, null);
    }
 
    // ФУНКЦИЯ РАБОТЫ С БД
    // ПОЛУЧЕНИЕ СПРАВОЧНИКА ПО ИМЕНИ
    public Cursor GetCatalogByName(String FullName)
    {
        Cursor cur = mDB.rawQuery("select * from " + FullName.toString() , null);
        cur.moveToFirst();
        return cur;
    }
 
    // ПОЛУЧЕНИЕ ПОЛЯ В СПРАВОЧНИКЕ ПО ИМЕНИ ПОЛЯ И СПРАВОЧНИКА
    public Cursor GetCatalogValueByName(String CatalogFullName,
                                        String FieldFullName,
                                        String ConditionField,
                                        String Value)
    {
        //Open();
 
        Log.v(TAG, "----МЫ В GetCatalogValueByName----");
 
        Log.v(TAG,"---ПРОСМОТР ПОСТУПАЮЩИХ ДАННЫХ." + " select " + FieldFullName + " from " + CatalogFullName +
                " where " + ConditionField + " = '" + Value + "'" );
 
        Cursor cur = mDB.rawQuery(" select " + FieldFullName +
                " from " + CatalogFullName +
                " where " + ConditionField + " = '" + Value + "'"
                , null);
 
        Log.v(TAG, " select " + FieldFullName +
                " from " + CatalogFullName +
                " where " + ConditionField + " = '" + Value + "'");
 
        cur.moveToFirst();
        //Close();
 
        Log.v(TAG, cur.getCount() + "");
 
        return cur;
    }
 
    // класс по созданию и управлению БД
    private class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context, String name, CursorFactory factory,
                        int version) {
            super(context, name, factory, version);
        }
 
        // создаем и заполняем БД
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
            db.execSQL(EVENT_TYPE_DB_CREATE);
            db.execSQL(MEETING_DB_CREATE);
            db.execSQL(EVENT_DB_CREATE);
 
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }
}



И сам лог
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
04-09 15:46:08.708  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОТКРЫВАЕМ ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ
04-09 15:46:08.728  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОК- ОТКРЫЛИ
04-09 15:46:08.728  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЖДЁМ 'ТЫК' КНОПКИ
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ТЫК!
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ РАБОТАЕ С МАНАМИ --- if (edtMan.getSelectedItem() != null) ---
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ----if МЫ ВНУТРИ  -----
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ----if -----   checkMan = true;
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ----if -----   checkMan = true;-- ОК
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ----if----- ПРИСВАИВАЕМ КУРСОРУ  cur = db.GetCatalogValueByName(.........);
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/DB__ACTIVITY﹕ ----МЫ В GetCatalogValueByName----
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg V/DB__ACTIVITY﹕ ---ПРОСМОТР ПОСТУПАЮЩИХ ДАННЫХ.
    select _id from man where name = 'Вася '
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg D/AndroidRuntime﹕ Shutting down VM
04-09 15:46:12.092  10679-10679/com.example.kirukato.coolstdreg W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4154d8b0)
04-09 15:46:12.102  10679-10679/com.example.kirukato.coolstdreg E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/com.example.kirukato.coolstdreg/databases/Allreg
            at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
            at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318)
            at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1261)
            at com.example.kirukato.coolstdreg.DB.GetCatalogValueByName(DB.java:154)
            at com.example.kirukato.coolstdreg.EventActivity$1.onClick(EventActivity.java:96)
            at android.view.View.performClick(View.java:4421)
            at android.view.View$PerformClick.run(View.java:17903)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
Программа не вся, так как тут есть ограничение по символам. Надеюсь на вашу помощь.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2015, 18:03
Ответы с готовыми решениями:

Ошибка "attempt to re-open an already-closed object: sqlitequery:"
Доброе утро! Реализую подсказки для SearchView. Курсор для подсказки заполняется в след. методе MainActivity: @Override ...

Ошибка при работе с Entity Framework (Object reference not set to an instance of an object)
Использую Entity Framework (класс MySiteDataContext). В базе есть хранимая процедура PagingOfGoodsCatalog, которую пытаюсь вызывать....

Attempt to assign property of non-object
Мне нужно обновить строку в БД юзера с текущем id для этого написан код $user_id =...

41
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.04.2015, 09:59
Лучший ответ Сообщение было отмечено Naomis как решение

Решение

Студворк — интернет-сервис помощи студентам
Naomis, весь твой головняк из-за невнимательности.
Объясняю

Java
1
2
3
4
5
6
7
8
 private static final String EVENT_DB_CREATE =
            "create table " + EVENT_TABLE + "(" +
                    EVENT_COLUMN_ID + " integer primary key autoincrement, " +
                    EVENT_COLUMN_MAN + " integer" +
                    EVENT_COLUMN_MEETING + " integer" +
                    EVENT_COLUMN_EVENT_TYPE + " integer" +
                    EVENT_COLUMN_VALUE + " integer" +
                    ");";
плюс

Java
1
db.execSQL(EVENT_DB_CREATE);
создаё таблицу следующей структуры

_id | integer primary key autoincrement
ManId | integerMeetingId integerEventTypeId integerValue integer
И естественно в этой таблице нет полей ни MeetingId, ни EventTypeId, ни Value.

Ты можешь возразить, дескать, какого х№, такая таблица вообще создалась с таким типом поля! и куда смотрит прогрессивная общественность?

И тут ты идёшь смотреть спецификацию SQLite и находшь
2.1 Determination Of Column Affinity

The affinity of a column is determined by the declared type of the column, according to the following rules in the order shown:

1. If the declared type contains the string "INT" then it is assigned INTEGER affinity.


2. If the declared type of the column contains any of the strings "CHAR", "CLOB", or "TEXT" then that column has TEXT affinity. Notice that the type VARCHAR contains the string "CHAR" and is thus assigned TEXT affinity.

3. If the declared type for a column contains the string "BLOB" or if no type is specified then the column has affinity NONE.

4. If the declared type for a column contains any of the strings "REAL", "FLOA", or "DOUB" then the column has REAL affinity.

Otherwise, the affinity is NUMERIC.

Note that the order of the rules for determining column affinity is important. A column whose declared type is "CHARINT" will match both rules 1 and 2 but the first rule takes precedence and so the column affinity will be INTEGER.
Т.е. типом ты можешь пытаться указать любой набор буков, но, как тольковстретится подходящее по вышеуказанным правилам, тип поля будет выбран автоматически.

Что у тебя и случилось - несмотря на заявленный добой для типа поля набор "integerMeetingIdintegerEventTypeIdinteg erValueinteger", SQLite находит там "int" и для себя считает это поле типа INTEGER.
Для него всё просто и понятно и он даже не подумал ругаться, а просто взял и создал вот такую таблицу.

А ты сиди и жди когда там появится поле MeetingId или EventTypeId или Value.

Камрад Rube заметил некоторую неточность

Цитата Сообщение от Rube Посмотреть сообщение
А запятые кто будет проставлять?
Ты тут же отрапортовал

Цитата Сообщение от Naomis Посмотреть сообщение
Rube, осознал ошибку, проставил запятые...
Java
1
2
3
4
5
6
7
8
private static final String EVENT_DB_CREATE =
* * * * * * "create table " + EVENT_TABLE + "(" +
* * * * * * * * * * EVENT_COLUMN_ID + " integer primary key autoincrement, " +
* * * * * * * * * * EVENT_COLUMN_MAN + " integer," +
* * * * * * * * * * EVENT_COLUMN_MEETING + " integer," +
* * * * * * * * * * EVENT_COLUMN_EVENT_TYPE + " integer," +
* * * * * * * * * * EVENT_COLUMN_VALUE + " integer" +
* * * * * * * * * * ");";
И теоретически это попытка выполнения следующего запроса

create table event(_id integer primary key autoincrement, ManId integer,MeetingId integer,EventTypeId integer,Value integer);
И, если бы была возможность - Андрюха завершил бы программу и ругнулся на недопустимый синтаксис.
Но он этого не сделал.

Почему?
Дык потому, что при создании объекта твоего класса DBHelper (наследника SQLiteOpenHelper) система посмотрела, что
1. База уже существует, а значит никаких onCreate вызывать не нужно будет.
2. Её версия осталсь прежней, а значит никаких изменений вноситься не должно, и никакие onUpgrade и onDowngrade вызывать также.

Поэтому все изменения внесённые в EVENT_DB_CREATE нигде не используются и база, как была так и осталась со старой таблицей event, но опяь же без полей MeetingId или EventTypeId или Value.

"Короче, Склифосовский"(с)

Чтобы подправить твою базу "на лету":

1. Добавляем пробелы после запятых
Java
1
2
3
4
5
6
7
8
private static final String EVENT_DB_CREATE =
* * * * * * "create table " + EVENT_TABLE + "(" +
* * * * * * * * * * EVENT_COLUMN_ID + " integer primary key autoincrement, " +
* * * * * * * * * * EVENT_COLUMN_MAN + " integer, " +
* * * * * * * * * * EVENT_COLUMN_MEETING + " integer, " +
* * * * * * * * * * EVENT_COLUMN_EVENT_TYPE + " integer, " +
* * * * * * * * * * EVENT_COLUMN_VALUE + " integer" +
* * * * * * * * * * ");";
2. Изменяем номер версии на больший, например, 2.
Java
1
private static final int DB_VERSION = 2;
3. Прописываем перtсоздание таблицы value в onUpgrade
Java
1
2
3
4
5
@Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(EVENT_DB_CREATE);
 
        }
4. ПИЛЯТЪ , убери же наконец
Java
1
2
3
4
5
6
 public void onPause()
    {
        super.onPause();
        Log.d("on pause", " / ");
        db.close();
    }
ВСЁ! Бей яйца и разговляйся. Только аккуратно, синька - зло
1
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
12.04.2015, 13:19  [ТС]
Armagedo, чёрт возьми! Категорически тебе благодарствую. Всё исправил! Но обновить БД по методу onUpgrade не получилось, программа начала ругаться и вылетать при любом телодвижении. Решил дело просто, снёс прогу и поставил заново. Теперь всё работает и пишет, не вылетает и логами не ругается, но есть ощущение, что добавление какое-то не верное, но это уже совсем другая песня. Категорически спасибо Armagedo и всем кто помогал. А мы пойдём дальше думать, работа только в самом разгаре.

Armagedo, точно-точно, синька-зло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2015, 13:19
Помогаю со студенческими работами здесь

Notes Error: Attempt To Reopen An Open Container
Переодически слетает (индекс) вида. При открытии выдает ошибку - Notes error: Attempt to reopen an open container. Помогает вид удалить и...

Open-closed principle
Является ли нарушением принципа открытости-закрытости, когда ты уже существующий класс, точнее его метод, модифицируешь, но при этом весь...

Warning: Attempt to modify property of non-object in и Warning: Attempt to modify property of non-object in
У меня ошибки: Warning: Attempt to modify property of non-object in Joomla/Registry/Registry.php on line 428 и Warning:...

There is already an open DataReader associated with this Command which must be closed first
Как приостановить выполнение предыдущего запроса, чтобы выполнилась 117 строка?

There is already an open DataReader associated with this Connection which must be closed first
There is already an open DataReader associated with this Connection which must be closed first MySql.Data.MySqlClient.MySqlException...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
42
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru