Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйвер PSQL в Qt4  (Прочитано 3253 раз)
0 Пользователей и 1 Гость смотрят эту тему.
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« : 13-04-2013 19:21 » 

Здравствуйте всем.

Мне надо подключиться к PostgreSQL СУБД.

На руках есть дллки драйвера для psql. Как мне сказали - "Положи их в папку с exe и все заработает". У того. кто сказал, видимо все так и работает, но только проект по-особому, видать, настроен.

Так вот вопрос - "Как состряпать подключение к СУБД?" Не важно, через эти драйвера, или в сборке Qt что-нибудь поменять.

Последний вариант тоже пробовал. Весь Qt я не перестраивал, а через "qmake includepath+=... libs+=... psql.pro" попытался настроить плагин. Но при nmake вылетела ошибка - "cannot open open include file libpq-fe.h, no such ... "

Помогите настроить подключение, плз. Дело точно в драйвере.
Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 13-04-2013 19:54 » 

Надеюсь тут читал http://qt-project.org/doc/qt-4.8/qsqldatabase.html#addDatabase-2. Хотя твоя ошибка говорит, что компилятор не может найти заголовочного файла.
« Последнее редактирование: 13-04-2013 19:56 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 13-04-2013 20:00 » 

Finch, Пробовал проделывать и такое
Код:
#include "qtdir/src/sql/drivers/psql/qsql_psql.cpp"

 PGconn *con = PQconnectdb("host=server user=bart password=simpson dbname=springfield");
 QPSQLDriver *drv =  new QPSQLDriver(con);
 QSqlDatabase db = QSqlDatabase::addDatabase(drv); // becomes the new default connection
 QSqlQuery query;
 query.exec("SELECT NAME, ID FROM STAFF");

Не опознает функцию PQconnectdb. А если ее убрать, то ругается на отсутствие все того же libpq-fe.h
Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 13-04-2013 20:18 » 

У тебя кстати С++ библиотека самого PostgreSQL стоит? Судя по этому сырцу, она активно используется.
« Последнее редактирование: 13-04-2013 20:19 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 13-04-2013 20:39 » 

Finch, думаю стоит. По внешнему виду похожа на плюсовую, да и вроде бы другим (на других языках) появляться неоткуда - не пытался даже устанавливать. 
Нашел этот хидер libpq-fe.h в папке, которую прописывал в includepath тут:
Код:
cd %QTDIR%\src\plugins\sqldrivers\psql
 qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
 nmake

Может я nmake'ом не правильно пользуюсь? запускал из цмд Студии x64
Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 13-04-2013 21:24 » 

 
Код:
unix:LIBS += -lpq
win32:LIBS += libpqdll.lib
Судя по этому, не совсем ту библиотеку хватаещ. Но дело не в этом. Компилятор не видит заголовояных файлов. Нужно наверно сказать, что за компилятор. Если компилируеш из командной строки, то можно посмотреть лог компиляции. Какую именно строку формирует мэйкер.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 13-04-2013 21:47 » 

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

Кстати сейчас вспомнил. Ты должен в свой .pro файл включить также строчку
Код:
QT += sql
« Последнее редактирование: 13-04-2013 22:07 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KBAC
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 13-04-2013 22:06 » 

Да, там проблема была со включением заголовков. Дальше продвинулся, но теперь следующее выдает: LNK1104: не может открыть файл lebpqdll.lib
И этого файла я у себя на компьютере найти не смог.

Добавлено через 5 минут и 59 секунд:
Finch, так написано в мануалке.
Цитата
Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:
Да и правильно, потому что откуда Qt'y знать как достучаться до postres'a сторонними методами. А внутри дравера Qt'а используется Postgres-овские какие-то коды, функции (на С), как я понимаю. http://www.postgresql.org/docs/8.1/static/libpq.html

Добавлено через 2 минуты и 30 секунд:
Finch, скорее всего вы другое имели ввиду, но все таки замечу - перехожу я (команда cd) в qt директорию

Добавлено через 6 минут и 15 секунд:
Цитата
Кстати сейчас вспомнил. Ты должен в свой .pro файл включить также строчку
Код:
QT += sql

Странно - у меня нет никакого pro-файла. Компилирую в студии.
« Последнее редактирование: 13-04-2013 22:21 от KBAC » Записан

У тебя все получится, главное -- верить и делать.
Порадоваться, когда все плохо -- легче, чем ты думаешь.
В действии счастье.
Вовлекая людей важно быть увлеченным чужой жизнью.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines