powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Sqlite в многопоточной программе.
25 сообщений из 85, страница 2 из 4
Sqlite в многопоточной программе.
    #39841377
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВозможно проблема совсем в другом, например обращение к БД происходит до открытия БД. Ошибка какая в err ?
Точно, что после открытия БД. err - не знаю. Try...catch надо ставить, а как и куда err вытащить неизвестно. Само приложение пишет, что не определен указатель - а единственный указатель, это и есть sqlite3 *db - сейчас не могу посмотреть в оригинале.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841380
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBATry...catch надо ставить, а как и куда err вытащить неизвестно.тяжелый случай.

YUBAпишет, что не определен указатель
Скрин сюда того где ОНО САМО пишет.

YUBAсейчас не могу посмотреть в оригинале.вот когда будешь рядом с компом и продоложим.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841384
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Найди место на самом вверху в ГУИ, где происходит mess про указатель.
Потом в коде например buttonClick....
Оберни все это место try.
Всё.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841399
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima TВозможно проблема совсем в другом, например обращение к БД происходит до открытия БД. Ошибка какая в err ?
Точно, что после открытия БД. err - не знаю. Try...catch надо ставить, а как и куда err вытащить неизвестно. Само приложение пишет, что не определен указатель - а единственный указатель, это и есть sqlite3 *db - сейчас не могу посмотреть в оригинале.
Не должно быть никаких исключений. Проверяй в начале
Код: plaintext
1.
if(db == 0) ... база еще не обкрыта



err тоже указатель, ты как его объявил?

Пример обработки ошибок отсюда
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    sqlite3 *db;
    char *err_msg = 0;
    
    int rc = sqlite3_open(":memory:", &db);
    
    if (rc != SQLITE_OK) {
        fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }
    
...
    
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
    
    if (rc != SQLITE_OK ) {
        fprintf(stderr, "Failed to create table\n");
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    } else {
        fprintf(stdout, "Table Friends created successfully\n");
    }
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841414
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе должно быть никаких исключенийсама база не выдаёт каких нибудь. Data not found... /FK?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841420
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpDima TНе должно быть никаких исключенийсама база не выдаёт каких нибудь. Data not found... /FK?
Насколько понимаю для этого сделан возврат ошибок.
Если не путаю, SQLite написана на C, а в C нет исключений, они в С++. Да и в документации ни слова про исключения.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841428
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Да. Они где то выше уровнем.
Я по диагонали гугл глянул - андроид и т.д.
Еще странно что про try автор первый сказал).
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841433
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, да, понятно. Но это ДЛЛ - нет там ни консоли ни ГУИ. Куда я stdout?
Пока все штатно, я могу в приложение текст возвратить, и оно выведет (открытие БД, в частности, и пр. - это все сделано). В данном случае до текста не доходит, и выбрасывается - не определен указатель - это поток приложения пишет, до err дело не доходит. Даже на err= sqlite3_prepare_v2(db, "begin;", 10, &ppStmt, &tail); Если оставить обе функции, то одна пишет в БД, вторая исключение дает. ДЛЛ продолжает исполняться. И получаем вывод типа:
ОК, не опр ук-тель, не опр ук-тель, не опр ук-тель, не опр ук-тель, ОК. Функции уже просто идентичны.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841439
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAНо это ДЛЛ - нет там ни консоли ни ГУИ. Куда я stdout?в лог файл все пишут.

YUBAмогу в приложение текст возвратить,наверно сначала вызов самой длл идет? Вот там stdout есть и перехват exception есть.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841444
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima T, да, понятно. Но это ДЛЛ - нет там ни консоли ни ГУИ. Куда я stdout?
В файл тоже нельзя писать? Навтыкай записей после каждой строки, пиши все подряд, что вызываешь, какие значения параметров.

fflush() не забывай вызывать.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841458
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpнаверно сначала вызов самой длл идет? Вот там stdout есть и перехват exception есть.
Вызов функций в ДЛЛ - все в норме. Вся работа с БД в классе, поток класс видит, все функции класса штатно исполняются, затык только на указателе sqlite3 *db;
Может это имеет значение - поток в котором коннектится ДЛЛ и создается подключение к БД отсоединен (detach), и крутится в ДЛЛ в цикле. Через него вызываются доступные функции приложения. Остальные потоки - события приложения.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841466
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAВызов функций в ДЛЛ - все в норме.мы это не видим. Если ГУИ стартануло поток, то он пройдет через 100 длл вызовов и вернется опять в ГУИ.

YUBAМожет это имеет значениеимеет.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841469
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAdetachесли есть тяжелые работы, то ТОЛЬКО ДЛЯ НИХ берется ОДИН ПОТОК НА РАБОТУ.
Либо из пула, либо заготовить штук 20, либо при аттаче потока он сам берет коннект до конца работы.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841470
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAОстальные потоки - события приложения.всё ГУИ это один основной поток. И все события в нем тоже.
Итого у вас один основной и один дополнительный.
Вот проверяйте это по логам с выводом id thread
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841471
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpDima TНе должно быть никаких исключенийсама база не выдаёт каких нибудь. Data not found... /FK?

Сама база, тем более sqlite , ничего не может выдавать
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841472
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Вау! Шарпист по теме слово сказал)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841473
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Возможно у вас основной полез в доп.поток или наоборот. Напрямую они лезть не должны.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841477
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpесли есть тяжелые работы, то ТОЛЬКО ДЛЯ НИХ берется ОДИН ПОТОК НА РАБОТУ.
Либо из пула, либо заготовить штук 20, либо при аттаче потока он сам берет коннект до конца работы. Детач поток выдается нам приложением для подключения ДЛЛ, конфигурации и пр. Завершение этого потока - эквивалентна отключению ДЛЛ от приложения. Его надо держать до конца работы с ДЛЛ.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841484
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpРолг Хупин,
Вау! Шарпист по теме слово сказал)

П. да, ты сказал слово
Фильм "Сережа", 1960
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841485
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharpесли есть тяжелые работы, то ТОЛЬКО ДЛЯ НИХ берется ОДИН ПОТОК НА РАБОТУ.
Либо из пула, либо заготовить штук 20, либо при аттаче потока он сам берет коннект до конца работы. Детач поток выдается нам приложением для подключения ДЛЛ, конфигурации и пр. Завершение этого потока - эквивалентна отключению ДЛЛ от приложения. Его надо держать до конца работы с ДЛЛ.тут не знаю. Смотрите логи как выше сказал на вызов перекрестный. Будет райзе, либо ваша ошибка.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841549
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAДетач поток выдается нам приложением для подключения ДЛЛ, конфигурации и пр. Завершение
этого потока - эквивалентна отключению ДЛЛ от приложения.

Ага, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841559
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАга, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам. Ерунда, все инициализировано. Никаких ага.)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841563
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Даже цели этого действа не прнимаю. У нас, что, из экзешника нельзя поток создать и внутри. длл вызвать?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841564
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADimitry SibiryakovАга, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам. Ерунда, все инициализировано. Никаких ага.)а что за ошибку тогда обсуждаем?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841567
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpа что за ошибку тогда обсуждаем? почитайте тему с начала, повторяться не буду. И кто сказал, что где-то ошибка?
Здесь надо не ошибку искать, а думать, как писать в БД через одно соединение из разных потоков.
...
Рейтинг: 0 / 0
25 сообщений из 85, страница 2 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Sqlite в многопоточной программе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]