![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
mezmay |
![]()
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: ![]() ![]() ![]() |
Работа с одной базой данных будет происходить из разных потоков. В документации сказано, что в этом случае надо для каждого потока создавать(или открывать?) соединение с БД. Как это правильно сделать? Для одного потока соединение создается так:
я должен этот код вызвать для каждого потока, или какой-то другой? Там еще сказано: Цитата Adds a database to the list of database connections using the driver type and the connection name connectionName. If there already exists a database connection called connectionName, that connection is removed. Это значит, что для каждого потока надо в addDatabase() передавать еще и новое имя коннекта? |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
вроде не нужно для каждого потока. Насколько я понимаю, список открытых баз - синглтон. И будет доступен по всему процессу. Даже синхронизацию делать, наверное, не требуется - так как это будет делать СУБД
|
|
|
mezmay |
![]()
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: ![]() ![]() ![]() |
А как же:
Цитата Threads and the SQL Module
A connection can only be used from within the thread that created it. Moving connections between threads or creating queries from a different thread is not supported. In addition, the third party libraries used by the QSqlDrivers can impose further restrictions on using the SQL Module in a multithreaded program. Consult the manual of your database client for more information |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
ну тогда да, получается, нужно в каждом потоке открыть БД.
Попробовать то несложно - если не откроешь в потоке, то запросы оттуда работать не будут в этом случае |
|
|
maint |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
я что то недопонял, а зачем вообще в sqlite юзер и пароль ?
Для отдельных dll/so я поступаю достаточно просто
Иначе про default connection что то говорит на консоль |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
mezmay |
![]()
Сообщение
#7
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: ![]() ![]() ![]() |
Цитата посмотри внимательно входные аргументы этого метода, там ответ на твой вопрос посмотрел:
что такое QLatin1String( defaultConnection ) я не совсем понял, но наверное надо вместо этого передавать уникальное имя для каждого потока? Сообщение отредактировал mezmay - 29.11.2012, 13:46 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
что такое QLatin1String( defaultConnection ) я не совсем понял это предопределённое имя - константа. Позволяющее упростить работу с модулем QSQL при использовании одного единственного соединения. Т.к. имя соединения используется во многих места - QSqlQuery, QSqlQueryTableModel, ...вместо этого передавать уникальное имя для каждого потока? да. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 16:59 |