powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt + Postgresql
62 сообщений из 62, показаны все 3 страниц
Qt + Postgresql
    #36544627
spair2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, многоуважаемые!
Я начал изучать Qt как платформу для создания кроссплатформенных GUI приложений. Для этих целей был скачен Qt SDK 2009.04. В качестве серверной части решил использовать локальный Postgresql 8.2. Все это работает под Windows XP Pro.
И то и другое работает замечательно...
Вопрос в том, как их вместе подружить?
Следуя инструкциям описанным в мануале к Qt собрать плагин не удается. При сборке после реконфигурации с включением туда опций -plugin-sql-psql -I d:\psql\include -L d:\psql\lib , застревает на сборке WebKit.
И еще, объясните мне пожалуйста четкую разницу между плагином и драйвером?
А можно ли прикрутить уже собранные кем-то плагин или драйвер? Куда их прописывать, чтобы Qt увидела их?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36544793
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фичко в том, что Qt собран с MinGW,
А постгрес собран MS VS.
Мне лично помАгло такое извращение: пересобрал слона под гигвином gcc-ом.
Вроде пашет.
=====================================================
Медицина относит алкоголь и табак к наркотическим веществам. Опьянение - это всего навсего нарушение работы головного мозга в следствие кислородного голодания. Хотите знать больше ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36547794
PavelVX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне тож интересен данный вопрос.
Вин ХР 32, сп3, енг.
При попытке запустить приложение выскакивает:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
"Ne smogla ya otkrit bazu!1" "Driver not loaded Driver not loaded"
Как правильно добавить PQSQL дрова? И потом, после сборки, на другом компьютере не будет проблем с запуском? Или там тоже нужно будет устанавливать Qt?
И вообще, почему они их не включают автоматом в сборку? :)
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36547811
PavelVX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, postgresql сервак стоит на другой машинке.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36548207
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никаких проблем со сборкой драйвера postgres не возникает ни в винде, ни в линухе
никакой разницы между driver и plugin нет. просто перейдите в папку с проектом драйвера выполните qmake c опциями "INCLUDEPATH+=path_to_postgres_headers" "LIBS+=path_to_libpq.dll -lpq" psql.pro, затем make

насчет Driver not loaded, может быть несколько причин.

1. Просмотрите есть ли все используемые драйвером библиотеки (libpq.dll и все с ним связанные, а так же vc redistr из установщика PostgresSQL). Это легче делать какой нибудь утилитой просмотра зависимостей библиотек.

2. Просмотрите в каких папка ваша прога ищет драйвер QApplication.libraryPaths(), а вообще попробуйте в директории с программой создать папку sqldrivers (или plugins/sqldrivers) и поместить туда драйвер.


не надо паниковать, как любая другая программа ваша программа на Qt будет требовать чтобы вы деплоили ее с нужными библиотеками, просто четко определите ее зависимости и включайте все библиотеки в инсталлятор программы (ну или носите их вместе с ней, если такого не имеется)
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36549408
sherzod_никаких проблем со сборкой драйвера postgres не возникает ни в винде, ни в линухе
никакой разницы между driver и plugin нет. просто перейдите в папку с проектом драйвера выполните qmake c опциями "INCLUDEPATH+=path_to_postgres_headers" "LIBS+=path_to_libpq.dll -lpq" psql.pro, затем make


Ваш рецепт мне, к сожалению, не помог.
У меня make - вообще отсутствует в системе. Есть только mingw32-make.
Попытка запуска " mingw32-make -f Makefile.Debug all " привела к ошибке ".../mingw32/bin/ld.exe: cannot find -lpq "
Подскажите, куда рыть ?

sherzod_
1. Просмотрите есть ли все используемые драйвером библиотеки (libpq.dll и все с ним связанные, а так же vc redistr из установщика PostgresSQL). Это легче делать какой нибудь утилитой просмотра зависимостей библиотек.


Пару примеров таких утилит, если не трудно.

sherzod_
2. Просмотрите в каких папка ваша прога ищет драйвер QApplication.libraryPaths(), а вообще попробуйте в директории с программой создать папку sqldrivers (или plugins/sqldrivers) и поместить туда драйвер.


Это рецепт тоже не работает.
Выполнив:
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\libpq.lib" psql.pro
mingw32-make -f Makefile.Debug all
я таки скомпилировал драйверы для postgresql-ля.
Но куда я их только не подсовывал - картинка одна и та же - Driver not loaded Driver not loaded
Так всё же куда их засунуть :) ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36549677
PavelVX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_, а можно еще раз и поподробнее? Прям вместе с полным примером команд :). Потом поместим это в фак.
У меня нет исходников постгреса. Он вообще стоит на линухе в другом месте. libpq.dll есть в установочной директории ODBC драйвера pgSQL. Платформа win xp.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36550997
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после установки qt и mingw нужно добавить их директории bin в виндяшный path.

вот вам простой make который использовался в более ранних версиях qt, поместите его в bin папке qt.

make.bat

@echo off
mingw32-make %*

__________________
How to Build the QPSQL Plugin on Windows

Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
nmake
__________________
в ассистенте есть подробная информация о том как собрать драйвер на различных системых.
без заголовочных файлов драйвер собрать не получится.

насчет примеров утилит под винду не помню (но точно помню что в нете есть что-то бесплатное, когда-то пользовался, погуглите) , под линуху стандартный ldd.

драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости. когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();

люди читайте assistent) лучшей документации не найти.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551206
sherzod_после установки qt и mingw нужно добавить их директории bin в виндяшный path.


Согласен, сделано.

sherzod_
вот вам простой make который использовался в более ранних версиях qt, поместите его в bin папке qt.

make.bat

@echo off
mingw32-make %*


Почему нет, можно и так :)

sherzod_
__________________
How to Build the QPSQL Plugin on Windows

Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
nmake
__________________


Видать давно Троли постргесс не ставили.
Ну нет там такой поддиректории ...\ms\...
Там просто C:\psql\lib\libpq.lib

sherzod_
драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости.

Эх, кабы знать как проверить, то мыбы ух!

sherzod_
когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();


Это в смысле посмотреть в рантайме куда путь QApplication::libraryPaths() укажет ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551269
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Логуновsherzod_
драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости.
Эх, кабы знать как проверить, то мыбы ух!Открой для себя волшебную утилиту http://www.dependencywalker.com/
Она точно скажет какие dll нужны и где система их сейчас видит.
Но она не поможет на динамически загружаемых библиотеках (в смысле плагинах).

Владимир Логуновsherzod_ когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();Это в смысле посмотреть в рантайме куда путь QApplication::libraryPaths() укажет ?Да. Это даст список путей по которым программа ищет свои плагины.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551332
sherzod_
Открой для себя волшебную утилиту http://www.dependencywalker.com/
Она точно скажет какие dll нужны и где система их сейчас видит.
Но она не поможет на динамически загружаемых библиотеках (в смысле плагинах).


Спасибо, помогло.

В моём случае надо было добавить в системную переменную PATH следующие элементы:
e:\Qt\2010.02\mingw\bin\;
e:\Qt\2010.02\qt\bin\;
c:\psql\lib\;
c:\psql\bin\
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551910
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет libraryPaths(), можно использовать судя по документации, так же addLibraryPath(const QString& path), и уж точно установить папку поиска плагинов и библиотек, но на практике в отношении надежности(будет ли это везде и всегда работать) IMH не проверял.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36553095
А я проверил только что.
На Kubuntu 9.10 + QT Creator 1.3.82 добавление в перечень путей поиска моей поддиректории /lib ничего не даёт :(
Ни драйвер постргесса , ни библиотеки NCReport-ёра оттуда не загружаются.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Qt + Postgresql
    #38732975
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, у меня есть 2-а вопроса: не проходит команда configure -I "c:\psql\include" -L "c:\psql\lib" -plugin-sql-psql
и исходники выдают при make массу ошибок.

На борту: Win, QtSDK 4.8.1. Если у кого есть правильные исходники -очень прошу - выложите, пожалуйста. Буду рад и готовому драйверу, но не халявщик в душе и соберу сам. )

Спасибо!

Исходники, выдающие ошибки приложил к посту.

Модератор: Как твоё сообщение относится к исходному посту данной ветки ? Если никак, опубликуй его отдельной веткой (начни новую), а это сообщение я потом удалю.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733047
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__,

Как собирать "драйвера" для QT SQL написано тут:

http://qt-project.org/doc/qt-5/sql-driver.html#supported-databases

Ты собираешь их неправильно -- configure вызывать НЕ НУЖНО.
Вместо этого используется утилита qmake.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733330
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, благодарю за информацию! Возможно, у меня кривые руки - я теоретик по большей части.
Что касается практики, то QtSDK 1.2.1 offline (исходников QtSDK нет), PostgreSQL 9.3.
Не прошло у меня configure я и "забил" на него. Не поверишь, но:

""How to Build the QPSQL Plugin on Windows

Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:/psql/include" "LIBS+=C:/psql/lib/ms/libpq.lib" psql.pro
nmake"'

Мои действия:
1. PostgreSQL установлен в директорию: С:\psql\
2. Смысла делать cd %QTDIR%\src\plugins\sqldrivers\psql не вижу, так как у меня отсутствует данная директория )
делаю cd С:\src - исходники старого драйвера мне принес приятель. И мы оба не понимаем - должны они подходить для данной платформы или нет. ) Если есть исходники, которые 100% корректные для QtSDK 1.2.1 и Postgre 9.3. - прошу выложить или кинуть линк (Низкий поклон!!!)
3.nmake - с чем его едят, файл с каким названием отвечает за данную операцию (qmake - minqw32-...exe) и надо ли путь к nmake прописывать в переменную окружения Оси?

Спасибо!
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733351
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, про nmake - у меня не msvc, а mingw )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733542
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__MasterZiv, про nmake - у меня не msvc, а mingw )

Тогда не nmake , а make или gmake.

Мог бы и сам догадаться.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733544
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Мои действия:
2. Смысла делать cd %QTDIR%\src\plugins\sqldrivers\psql не вижу, так как у меня отсутствует данная директория )


Это директория с исходнимами "драйвера" SQL для Postgres.
Если у тебя её нет, то что ты собираешься собирать -- не понятно.


Pupil__ делаю cd С:\src - исходники старого драйвера мне принес приятель.



Если ты будешь собирать исходники старого "драйвера" для нового QT, получится полная хрень.
Тебе надо собирать "драйвер" из исходников именно того QT, который ты собираешься использовать.
Его не нужно искать, он лежит в исходниках QT, которые тольконадо попросить установить (или доустановить)
при установке.

Последние QT ставятся вообще из интернета инсталером, там это очень легко доставить.

Pupil__И мы оба не понимаем - должны они подходить для данной платформы или нет. ) Если есть исходники, которые 100% корректные для QtSDK 1.2.1 и Postgre 9.3. - прошу выложить или кинуть линк (Низкий поклон!!!)


QtSDK 1.2.1 -- это что за зверь ? сейчас QT 5.3.1 последний.

Pupil__3.nmake - с чем его едят, файл с каким названием отвечает за данную операцию (qmake - minqw32-...exe) и надо ли путь к nmake прописывать в переменную окружения Оси?


это аналого утилиты make из мира Юникс, но сделаный и доделанный Microsoft-ом.
В MinGW идёт свой make (это GNU make) , он называется либо make, либо gmake, либо mingw-make, как ты написал.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733900
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачал исходники 4.8.1. Пытаюсь собрать в креаторе плагин Postgre, оно у меня выдает:
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
Что с этим делать?

При попытке собрать в консоли - также не проходит сборка

Или мне весь Qt 4.8.1 полностью пересобрать из сорцов?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733902
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не пишу на последнем Qt в силе обстоятельства. То, что Порш лучше Жигулей - известно всем )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733914
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QtSdk-offline-win-x86-v1_2_1
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734225
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Я не пишу на последнем Qt в силе обстоятельства.

Зря.

Хорошо, если оно всё соберётся с последним Postgres... А если нет ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734230
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Скачал исходники 4.8.1. Пытаюсь собрать в креаторе плагин Postgre, оно у меня выдает:
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
Что с этим делать?
При попытке собрать в консоли - также не проходит сборка


Ты не привёл полностью ошибку, я не знаю, что делать.
Сообщение об ошибке явно обрублено.

Напиши полностью, что делал, какую комманду запускал, и весь её вывод.
Если он большой, выдели одну ошибку характерную, но так, чтобы её текст был виден целиком, лучше прихватить чуть больше информации, чем обрезать.

Если много -- используй при оформлении сообщения spoiler (находится под кнопкой "дополнит.").


Пока это похоже на использование неверных конфигураций -- собираешь для QT в виде DLL, а исползуешь библиотеки от static lib или наоборот.

Pupil__Или мне весь Qt 4.8.1 полностью пересобрать из сорцов?


Нет, конечно же нет.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734242
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗря.

Хорошо, если оно всё соберётся с последним Postgres... А если нет ?

- Застрелюсь

авторТы не привёл полностью ошибку, я не знаю, что делать.
Сообщение об ошибке явно обрублено.

Напиши полностью, что делал, какую комманду запускал, и весь её вывод.
Если он большой, выдели одну ошибку характерную, но так, чтобы её текст был виден целиком, лучше прихватить чуть больше информации, чем обрезать.

Если много -- используй при оформлении сообщения spoiler (находится под кнопкой "дополнит.").


Пока это похоже на использование неверных конфигураций -- собираешь для QT в виде DLL, а исползуешь библиотеки от static lib или наоборот.

16:48:30: Выполняется сборка проекта psql...
16:48:30: Настройки не изменились, этап qmake пропускается.
16:48:30: Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe»
C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `C:/QtSDK/src/psql'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtGui" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtSql" -I"..\..\Desktop\Qt\4.8.1\mingw\include" -I"..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug" -I"..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\moc_qsql_psql.o debug\moc_qsql_psql.cpp
mingw32-make.exe[1]: Leaving directory `C:/QtSDK/src/psql'
debug\moc_qsql_psql.cpp:50: warning: 'static void QPSQLDriver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:68: warning: 'QPSQLDriver::staticMetaObjectExtraData' redeclared without dllimport attribute after being referenced with dll linkage
debug\moc_qsql_psql.cpp:72: warning: 'QPSQLDriver::staticMetaObject' redeclared without dllimport attribute after being referenced with dll linkage
debug\moc_qsql_psql.cpp:81: warning: 'virtual const QMetaObject* QPSQLDriver::metaObject() const' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:86: warning: 'virtual void* QPSQLDriver::qt_metacast(const char*)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:94: warning: 'virtual int QPSQLDriver::qt_metacall(QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
mingw32-make.exe[1]: *** [debug/moc_qsql_psql.o] Error 1
mingw32-make.exe: *** [debug] Error 2
16:48:31: Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта psql (цель: Desktop)
Во время выполнения сборки на этапе «Сборка»
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734246
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собираю в QtCreator debug and Release version Qt 4.8.1
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734260
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибку выдает в строке 68

Код: plaintext
1.
2.
3.
const QMetaObjectExtraData QPSQLDriver::staticMetaObjectExtraData = {
    0,  qt_static_metacall 
};





Код: plaintext
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.
/****************************************************************************
** Meta object code from reading C++ file 'qsql_psql.h'
**
** Created: Mon 1. Sep 17:03:10 2014
**      by: The Qt Meta Object Compiler version 63 (Qt 4.8.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/

#include "../qsql_psql.h"
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'qsql_psql.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 63
#error "This file was generated using the moc from 4.8.1. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif

QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_QPSQLDriver[] = {

 // content:
       6,       // revision
       0,       // classname
       0,    0, // classinfo
       4,   14, // methods
       0,    0, // properties
       0,    0, // enums/sets
       0,    0, // constructors
       0,       // flags
       0,       // signalCount

 // slots: signature, parameters, type, tag, flags
      23,   18,   13,   12, 0x09,
      70,   18,   13,   12, 0x09,
     133,   12,  121,   12, 0x09,
     175,   12,   12,   12, 0x08,

       0        // eod
};

static const char qt_meta_stringdata_QPSQLDriver[] = {
    "QPSQLDriver\0\0bool\0name\0"
    "subscribeToNotificationImplementation(QString)\0"
    "unsubscribeFromNotificationImplementation(QString)\0"
    "QStringList\0subscribedToNotificationsImplementation()\0"
    "_q_handleNotification(int)\0"
};

void QPSQLDriver::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
    if (_c == QMetaObject::InvokeMetaMethod) {
        Q_ASSERT(staticMetaObject.cast(_o));
        QPSQLDriver *_t = static_cast<QPSQLDriver *>(_o);
        switch (_id) {
        case 0: { bool _r = _t->subscribeToNotificationImplementation((*reinterpret_cast< const QString(*)>(_a[1])));
            if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; }  break;
        case 1: { bool _r = _t->unsubscribeFromNotificationImplementation((*reinterpret_cast< const QString(*)>(_a[1])));
            if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; }  break;
        case 2: { QStringList _r = _t->subscribedToNotificationsImplementation();
            if (_a[0]) *reinterpret_cast< QStringList*>(_a[0]) = _r; }  break;
        case 3: _t->_q_handleNotification((*reinterpret_cast< int(*)>(_a[1]))); break;
        default: ;
        }
    }
}

const QMetaObjectExtraData QPSQLDriver::staticMetaObjectExtraData = {
    0,  qt_static_metacall 
};

const QMetaObject QPSQLDriver::staticMetaObject = {
    { &QSqlDriver::staticMetaObject, qt_meta_stringdata_QPSQLDriver,
      qt_meta_data_QPSQLDriver, &staticMetaObjectExtraData }
};

#ifdef Q_NO_DATA_RELOCATION
const QMetaObject &QPSQLDriver::getStaticMetaObject() { return staticMetaObject; }
#endif //Q_NO_DATA_RELOCATION

const QMetaObject *QPSQLDriver::metaObject() const
{
    return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
}

void *QPSQLDriver::qt_metacast(const char *_clname)
{
    if (!_clname) return 0;
    if (!strcmp(_clname, qt_meta_stringdata_QPSQLDriver))
        return static_cast<void*>(const_cast< QPSQLDriver*>(this));
    return QSqlDriver::qt_metacast(_clname);
}

int QPSQLDriver::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QSqlDriver::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        if (_id < 4)
            qt_static_metacall(this, _c, _id, _a);
        _id -= 4;
    }
    return _id;
}
QT_END_MOC_NAMESPACE
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734286
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытка сборки в консоли:

}{абр

Конфигурируем исходники и включаем нужный драйвер как plugin
configure -I "c:\psql\include" -L "c:\psql\lib" -plugin-sql-psql

Результат:

авторSetting up environment for Qt usage...

C:\Windows\system32>configure -I "c:\psql\include" -L "c:\psql\lib" -plugin-sql-
psql
Qt: Untested Windows version 6.2 detected!
Error: Creating a shadow build of Qt requires
perl to be in the PATH environment
C:\Windows\system32>

В "c:\psql - PostgreSQL 9.3 (не драйвер)
Причем здесь Перл? Какую версию (если она нужна) надо использовать и как подключать в Qt?

Команды
cd src\plugins\sqldrivers\psql
qmake psql.pro выполняются, а make выдает ошибку, аналогично сборке в Креаторе:

Setting up environment for Qt usage...

C:\Windows\system32>configure -I "c:\psql\include" -L "c:\psql\lib" -plugin-sql-
psql
Qt: Untested Windows version 6.2 detected!
Error: Creating a shadow build of Qt requires
perl to be in the PATH environment
C:\Windows\system32>cd C:\QtSDK\src\psql

C:\QtSDK\src\psql>qmake psql.pro
Qt: Untested Windows version 6.2 detected!
WARNING: c:\QtSDK\src\psql\psql.pro:7: Unable to find file for inclusion qsqldri
verbase.pri
WARNING: c:\QtSDK\src\psql\psql.pro:7: Unable to find file for inclusion qsqldri
verbase.pri
WARNING: c:\QtSDK\src\psql\psql.pro:7: Unable to find file for inclusion qsqldri
verbase.pri

C:\QtSDK\src\psql>mingw32-make debug
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/QtSDK/src/psql'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -D
QT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
-I"..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\Desktop\Qt\4.8.1\mingw
\include\QtGui" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtSql" -I"..\..\Desktop\
Qt\4.8.1\mingw\include" -I"..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"deb
ug" -I"..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\main.o main.cpp
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -D
QT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
-I"..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\Desktop\Qt\4.8.1\mingw
\include\QtGui" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtSql" -I"..\..\Desktop\
Qt\4.8.1\mingw\include" -I"..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"deb
ug" -I"..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\qsql_psql.o qsql
_psql.cpp
qsql_psql.cpp:715: warning: 'QPSQLDriver::QPSQLDriver(QObject*)' redeclared with
out dllimport attribute: previous dllimport ignored
qsql_psql.cpp:721: warning: 'QPSQLDriver::QPSQLDriver(PGconn*, QObject*)' redecl
ared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:733: warning: 'void QPSQLDriver::init()' redeclared without dllimp
ort attribute after being referenced with dll linkage
qsql_psql.cpp:738: warning: 'virtual QPSQLDriver::~QPSQLDriver()' redeclared wit
hout dllimport attribute: previous dllimport ignored
qsql_psql.cpp:745: warning: 'virtual QVariant QPSQLDriver::handle() const' redec
lared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:750: warning: 'virtual bool QPSQLDriver::hasFeature(QSqlDriver::Dr
iverFeature) const' redeclared without dllimport attribute after being reference
d with dll linkage
qsql_psql.cpp:790: warning: 'virtual bool QPSQLDriver::open(const QString&, cons
t QString&, const QString&, const QString&, int, const QString&)' redeclared wit
hout dllimport attribute: previous dllimport ignored
qsql_psql.cpp:836: warning: 'virtual void QPSQLDriver::close()' redeclared witho
ut dllimport attribute after being referenced with dll linkage
qsql_psql.cpp:855: warning: 'virtual QSqlResult* QPSQLDriver::createResult() con
st' redeclared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:860: warning: 'virtual bool QPSQLDriver::beginTransaction()' redec
lared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:877: warning: 'virtual bool QPSQLDriver::commitTransaction()' rede
clared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:910: warning: 'virtual bool QPSQLDriver::rollbackTransaction()' re
declared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:927: warning: 'virtual QStringList QPSQLDriver::tables(QSql::Table
Type) const' redeclared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:958: warning: 'virtual QSqlIndex QPSQLDriver::primaryIndex(const Q
String&) const' redeclared without dllimport attribute: previous dllimport ignor
ed
qsql_psql.cpp:1039: warning: 'virtual QSqlRecord QPSQLDriver::record(const QStri
ng&) const' redeclared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:1176: warning: 'virtual QString QPSQLDriver::formatValue(const QSq
lField&, bool) const' redeclared without dllimport attribute: previous dllimport
ignored
qsql_psql.cpp:1263: warning: 'virtual QString QPSQLDriver::escapeIdentifier(cons
t QString&, QSqlDriver::IdentifierType) const' redeclared without dllimport attr
ibute: previous dllimport ignored
qsql_psql.cpp:1274: warning: 'virtual bool QPSQLDriver::isOpen() const' redeclar
ed without dllimport attribute after being referenced with dll linkage
qsql_psql.cpp:1279: warning: 'QPSQLDriver::Protocol QPSQLDriver::protocol() cons
t' redeclared without dllimport attribute: previous dllimport ignored
qsql_psql.cpp:1284: warning: 'bool QPSQLDriver::subscribeToNotificationImplement
ation(const QString&)' redeclared without dllimport attribute: previous dllimpor
t ignored
qsql_psql.cpp:1318: warning: 'bool QPSQLDriver::unsubscribeFromNotificationImple
mentation(const QString&)' redeclared without dllimport attribute: previous dlli
mport ignored
qsql_psql.cpp:1351: warning: 'QStringList QPSQLDriver::subscribedToNotifications
Implementation() const' redeclared without dllimport attribute: previous dllimpo
rt ignored
qsql_psql.cpp:1356: warning: 'void QPSQLDriver::_q_handleNotification(int)' rede
clared without dllimport attribute: previous dllimport ignored
C:\QtSDK\Desktop\Qt\4.8.1\mingw\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQ
T_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT
_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -
I"..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\Desktop\Qt\4.8.1\mingw\i
nclude\QtGui" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtSql" -I"..\..\Desktop\Qt
\4.8.1\mingw\include" -I"..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug
" -I"..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -D__GNUC__ -DWIN32 qsql_psq
l.h -o debug\moc_qsql_psql.cpp
Qt: Untested Windows version 6.2 detected!
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -D
QT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
-I"..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\Desktop\Qt\4.8.1\mingw
\include\QtGui" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtSql" -I"..\..\Desktop\
Qt\4.8.1\mingw\include" -I"..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"deb
ug" -I"..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\moc_qsql_psql.o
debug\moc_qsql_psql.cpp
debug\moc_qsql_psql.cpp:50: warning: 'static void QPSQLDriver::qt_static_metacal
l(QObject*, QMetaObject::Call, int, void**)' redeclared without dllimport attrib
ute: previous dllimport ignored
debug\moc_qsql_psql.cpp:68: warning: 'QPSQLDriver::staticMetaObjectExtraData' re
declared without dllimport attribute after being referenced with dll linkage
debug\moc_qsql_psql.cpp:72: warning: 'QPSQLDriver::staticMetaObject' redeclared
without dllimport attribute after being referenced with dll linkage
debug\moc_qsql_psql.cpp:81: warning: 'virtual const QMetaObject* QPSQLDriver::me
taObject() const' redeclared without dllimport attribute: previous dllimport ign
ored
debug\moc_qsql_psql.cpp:86: warning: 'virtual void* QPSQLDriver::qt_metacast(con
st char*)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:94: warning: 'virtual int QPSQLDriver::qt_metacall(QMeta
Object::Call, int, void**)' redeclared without dllimport attribute: previous dll
import ignored
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver
::staticMetaObjectExtraData' of dllimport'd class
mingw32-make[1]: *** [debug/moc_qsql_psql.o] Error 1
mingw32-make[1]: Leaving directory `C:/QtSDK/src/psql'
mingw32-make: *** [debug] Error 2

C:\QtSDK\src\psql>
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734290
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__,

Код: plaintext
1.
2.
3.
4.
5.
debug\moc_qsql_psql.cpp:81: warning: 'virtual const QMetaObject* QPSQLDriver::metaObject() const' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:86: warning: 'virtual void* QPSQLDriver::qt_metacast(const char*)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:94: warning: 'virtual int QPSQLDriver::qt_metacall(QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
mingw32-make.exe[1]: *** [debug/moc_qsql_psql.o] Error 1


Это явно проблемы с конфигурацией.
Код этот должен ЭКСПОРТИРОВАТЬ класс, потому что ты собираешь саму библиотеку, которая будет потом использоваться,
а он сконфигурён так, как если бы ты собирал приложение, его использующее.

Как надо конфигурировать -- не знаю... Надо думать.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734297
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Попытка сборки в консоли:

}{абр

авторНасколько я понимаю, по-умолчанию, SQL драйверы собираются статически, т.е. для линковки с QtSql.



Он понимает неправильно, хотя бы для 5-ых версий -- там всё собирается по умолчанию как плагины.

Но, видимо, путь в общем всё же правильный...

Pupil__В "c:\psql - PostgreSQL 9.3 (не драйвер)
Причем здесь Перл? Какую версию (если она нужна) надо использовать и как подключать в Qt?

Команды
cd src\plugins\sqldrivers\psql
qmake psql.pro выполняются, а make выдает ошибку, аналогично сборке в Креаторе:




Ну, блин, надо ему Перл -- так поставь...

Версию поставь последнюю.

Для MinGW/SYS есть тоже online установщик, и там просто можно тыкнуть и доставить Perl.

В ошибках пока всё то же самое -- он пытается компилироваться как будто из пользовательского приложения.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734568
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, я понимаю, что на Qt 5.x.x. все прекрасно.
Что касается сборки - то как всегда в стиле Qt- скачал Перл с сайта - нет никакого FAQ - к какой версии Qt оно корректно подключается и куда его пихать и что где прописывать, чтобы консоль его уразумела...
При задаче надстроить научный модуль МКС - станцию надо разобрать полностью, перемонтировать генераторы, переклонировать астронавтов, подключить инопланетный кристалл и собрать снова, а потом смотреть - а выживут ли они ? )))
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734723
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, плагин собран. Еще один прикол на пути - подключение его в готовый проект ) Quest продолжается... Comedy на первом )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734759
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__MasterZiv, плагин собран. Еще один прикол на пути - подключение его в готовый проект ) Quest продолжается... Comedy на первом )

Какие файлы получил ?

С остатком квеста помогу -- да и было уже тут -- это не сложно.

сейчас найду ссылку на пост, кину.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734775
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qsqlpsqld4.dll и qsqlpsql4.dll и 2-а фала с расширением .а.
Фундаментальный вопрос: что надо прописать в файл .pro проекта и, чтобы оно при создании подключения в структуре QSqlDatabase
увидело саму БД )))
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734795
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__qsqlpsqld4.dll и qsqlpsql4.dll и 2-а фала с расширением .а.


Нужны ТОЛЬКО .dll -- с суффиксом 'd' -- это отладочная версия, без 'd' -- релизная -- НЕ ПЕРЕПУТАЙ!!

.a не нужны.

Далее *.dll нужно положить в каталог, где ты собираешь твоё приложение и откуда оно будет запускаться (и потом в дистрибутиве разместить так же), в подкаталог sqldrivers ,
а библиотеки, от которых зависит твоё приложение (QT-шные и прочие) и (!) плагин для PostgreSQL (т.е. libpgsql или как его там ) -- в сам каталог приложения, в "корень" размещения приложения, рядом с .exe.

Есть ещё вариант прописать пути ко всем нужным библиотекам *.dll для твоего приложения в переменную PATH, тогда всё равно где они будут лежать, но так потом проще распространять приложение.

в итоге должна получиться примерно такая структура каталогов и файлов
(на примере моего приложения loggyview):

Код: plaintext
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.
ziv@xozzo:~/tmp/loggyview-2$ tree 


.
├── activemq-cpp.dll
├── icudt51.dll
├── icuin51.dll
├── icuuc51.dll
├── libapr-1.dll
├── libEGLd.dll
├── libEGL.dll
├── libGLESv2.dll
├── libmysql.dll
├── loggyview.exe
├── loggyview-run.bat
├── msvcp100.dll
├── msvcr100.dll
├── platforms
│   ├── qminimald.dll
│   ├── qminimal.dll
│   ├── qminimald.pdb
│   ├── qoffscreend.dll
│   ├── qoffscreen.dll
│   ├── qoffscreend.pdb
│   ├── qwindowsd.dll
│   ├── qwindows.dll
│   └── qwindowsd.pdb
├── Qt5Core.dll
├── Qt5Gui.dll
├── Qt5Sql.dll
├── Qt5V8.dll
├── Qt5Widgets.dll
├── Qt5Xml.dll
└── sqldrivers
    ├── qsqlited.dll
    ├── qsqlite.dll
    ├── qsqlited.pdb
    ├── qsqlmysqld.dll
    ├── qsqlmysql.dll
    ├── qsqlodbcd.dll
    ├── qsqlodbc.dll
    ├── qsqlodbcd.pdb
    ├── qsqlpsqld.dll
    ├── qsqlpsql.dll
    └── qsqlpsqld.pdb

2 directories, 39 files


Pupil__Фундаментальный вопрос: что надо прописать в файл .pro проекта и, чтобы оно при создании подключения в структуре QSqlDatabase
увидело саму БД )))


ничего.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734801
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Код: plaintext
1.
2.
3.
 
 ├── qsqlpsqld.dll
 ├── qsqlpsql.dll


Тут у меня небольшая помарка, qsqlpsqld.dll и qsqlpsql.dll одновременно не нужны, либо то, либо другое.
В отладочную версию нужно класть qsqlpsqld.dll, в релизную -- qsqlpsql.dll
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735246
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, у меня истерика.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735252
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, собрал я dll по данной инструкции: .

Скопировал данные dll во все места: в папку примера, в пример/debug и пример/release
и т.д. Не видит оно драйвера Qt. Пример в приложении к теме.

Попытался "войти" через другую дверь и подключиться к PostgreSQL с помощью ODBC - для LabVIEW я это с полоборота сделал. И здесь -стопкран )

Код: plaintext
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.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDateTime>
#include <QtSql/QPSQLDriver>
#include <QtSql/QODBCResult>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlError>

#define DB_DRIVER_ODBC3 "QODBC3"
#define DB_DRIVER_POSTGRE "PostgreSQL"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    qDebug() << QCoreApplication::libraryPaths();
    QStringList list = QSqlDatabase::drivers();
    for(int x = 0; x < list.length(); x++)
        ui->log->append(list.at(x));
    
    QSqlDatabase db = QSqlDatabase::addDatabase(DB_DRIVER_ODBC3);
    
    ui->log->append(tr("---<br><b>QPSQL-driver is ")
                    +(db.isValid()
                      ? tr("<font color=green>OK</font></b>")
                        : tr("<font color=red>NOT</font></b>")));
       
    db.setDatabaseName("DRIVER={QODBC3};Server=(127.0.0.1);Port=(5432);Database=(test_base); Uid={postgres};Pwd=(12345678)");
    db.open();

    if(db.open())
    {
    qDebug() <<"opened" ;
    db.close();

    }
    else
    {
    qDebug() << db.lastError().text();
    }
}



"Звезда в шоке" )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735253
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735344
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__MasterZiv, у меня истерика.

Don't panic!
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735728
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, благодарю тебя за моральную поддержку как в Крепком орешке 1. И не стоит меня винить в отсутствии навыках гугленья. Я нашел массу статей. Только, что у кого-то идет ЛеГко. У меня тоже самое - ни Х... не работает... )
И вопрос здесь не в структуре файлов и куда их пихать, а в шаманском устройстве Qt: в этом отношении цивилизация явно сделала шаг назад )))
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735750
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
offtopic
само собой, раз
Pupil__ у кого-то идет ЛеГко.

но
Pupil__ У меня тоже самое - ни Х... не работает...
то проблема, безусловно
Pupil__ в шаманском устройстве Qt
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735895
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно:

Код: plaintext
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.
QWidget w;
    
        QMessageBox::information(&w, QString( "DRIVERS" ), driverList );

        db = QSqlDatabase::addDatabase( "QODBC3", "FirstConn" );
        if ( db.isValid() )
        {
            db.setDatabaseName( "DRIVER={Microsoft OLE DB for ODBC Drivers};FIL={PostgreSQL30}" );
            if ( db.open() )
            {
                // SUCCESS //
                QMessageBox::information( &w, QString( "SUCCESS" ), QString( "DATABASE OPENED SUCCESSFULLY" ) );

                w.show();
                qDebug() << "connect";

                //return a.exec();
            }
            else
            {
                // FAILURE //
                QMessageBox::question( &w, QString( "ERROR" ), db.lastError().text() );
            }
        }
        else
        {
            // FAILURE //
            QMessageBox::critical( &w, QString( "CRITICAL ERROR" ), db.lastError().text() );
        }


дает следующее: "QSQLLITE QODBC3 QODBC".
Друзья, какие волшебные строки необходимо заполнить, чтобы оно подключилось к СУБД PostgreSQL?

Сейчас оно при:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
QSqlDatabase db = QSqlDatabase::addDatabase("ODBC");

   
    db.setHostName("DRIVER=PostgreSQLW35};Server=127.0.0.1;Port=5432;Database=test_base); Uid=postgres;Pwd=12345678");

    
    //db.setHostName("localhost");
    //db.setPort(5432);
    //db.setUserName("postgres");
    //db.setPassword("12345678");
    //db.setDatabaseName("test_base");



выдает:
QSqlDatabase: ODBC driver not loaded

У меня в свойствах канала передачи данных ODBC
для PostgreSQL два соединения: PostgreSQL35W и PostgreSQL30
DRIVER надо присваивать что-то другое?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735963
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rovanсамо собой, раз
Pupil__ у кого-то идет ЛеГко.
но
Pupil__ У меня тоже самое - ни Х... не работает...
то проблема, безусловно
Pupil__ в шаманском устройстве Qt


Да нет, наоборот, в большом количестве неактуальных статей.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735965
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Попытался "войти" через другую дверь и подключиться к PostgreSQL с помощью ODBC - для LabVIEW я это с полоборота сделал. И здесь -стопкран )

Зря. Коней на переправе не меняют.
Запутаешься лишь больше.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735973
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv , а кто сказал, что я меняю. Играю одновременно на 2-х досках )
Что-то по существу можешь намекнуть?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735974
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__
У меня в свойствах канала передачи данных ODBC
для PostgreSQL два соединения: PostgreSQL35W и PostgreSQL30
DRIVER надо присваивать что-то другое?

Не знаю. Там должно быть имя драйвера ODBC для PoatgreSQL.
А какое правльное -- зависит от версии PG и твоих желаний -- может быть один лучше, другой хуже.
Я не знаю, я с PG не коннектился по ODBC.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735977
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pupil__,

"QSQLLITE QODBC3 QODBC "
QSqlDatabase db = QSqlDatabase::addDatabase(" ODBC ");
Найди одно отличие в выделенном. Пользуйся драйверами из списка.
Как это сделать - читай в документации .
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38735982
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__MasterZiv , а кто сказал, что я меняю. Играю одновременно на 2-х досках )
Что-то по существу можешь намекнуть?

Да я уже запутался немного.

Если это очень надо, то, думаю, надо лучше устроить с тобой сеанс связи по skype.

Дай мне сегодня попробовать самому это сделать (собрать драйвер для PG).
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736019
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, dll первая в приложении

Модератор: Вложение удалено.
не надо публиковать бинарники.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736020
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv , вторая
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736034
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, dll вторая http://rghost.ru/private/57827197/e006fe2b7c5aeaaba3fc37f034244c04
пароль на скачивание 12345678
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736102
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, скайпа на работе у меня нет. )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736109
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rovan, спасибо за замечание, но если подправить орфографическую ошибку, то оно выдает следующее:
"[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect"
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736159
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я СДЕЛАЛ ЭТО!!! БУБЕН РУЛИТ!!! ГОЛ НА 90-ТОЙ МИНУТЕ!!!
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736168
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы браться и сёстры не страдали, что надо доделать:

1. Собрать dll по http://answerstop.org/question/104803/how-to-access-postgresql-using-qt-in-windows

2. из директории: C:\Program Files (x86)\pgAdmin III\1.18\
файлы Библиотеки: libeay32.dll, libiconv.dll, libintl.dll, libpq.dll, libxml2.dll, libxslt.dll, ssleay32.dll.
cкопировать в С:\windows\

Спасибо всем!
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736205
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Чтобы браться и сёстры не страдали, что надо доделать:

1. Собрать dll по http://answerstop.org/question/104803/how-to-access-postgresql-using-qt-in-windows

2. из директории: C:\Program Files (x86)\pgAdmin III\1.18\
файлы Библиотеки: libeay32.dll, libiconv.dll, libintl.dll, libpq.dll, libxml2.dll, libxslt.dll, ssleay32.dll.
cкопировать в С:\windows\

Спасибо всем!

Блин, а я тебе о чём говорил-то ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736287
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, извини, если я тебя не понял. Написал бы ты сразу так - как решается вопрос - 2-а дня не пропали бы на тра...дром... )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736402
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivБлин, а я тебе о чём говорил-то ?
Он не читатель. Даже не слушатель. Не удивляйся.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736599
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rovan, косяк признаю. Как выяснить - от каких dll зависит PQSQL не знаю. Еще раз прочел. Совет был - близко к абстрактному. Если Человек тонет, то ему совет - смотри как надо плавать )
Драйвер в таком виде и так собрал первый раз )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38736668
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pupil__Как выяснить - от каких dll зависит PQSQL не знаю.
Ищущий да обрящет . Так ты узнаешь зависимости.
Здесь ты узнаешь, где, обычно, ищутся библиотеки, которые нужны по зависимостям.
Pupil__ косяк признаю.
Это хорошо - учиться будет проще.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38737159
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rovan, Пасиб!
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt + Postgresql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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