Форум: Форум C++Разное
Новые темы: 00
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Qt 4.8 и PostgreSQL 9
 
 автор: B-Rhyme   (25.03.2012 в 14:50)   письмо автору
 
 

Нужно написать интерфейс к базе данных. Очень хочется использовать Qt.
Как их, собственно, заставить работать вместе?
Добавил в переменную окружения PATH пути: C:\PostgreSQL\bin;C:\PostgreSQL\include;C:\PostgreSQL\lib
а что делать дальше?)

  Ответить  
 
 автор: cheops   (25.03.2012 в 17:53)   письмо автору
 
   для: B-Rhyme   (25.03.2012 в 14:50)
 

Собственно Qt тут не причем, вам лучше для начала просто установить связь с PostgreeSQL из C-программы. Сейчас постараюсь подготовить примерчик с описанием построения проекта.

  Ответить  
 
 автор: cheops   (25.03.2012 в 19:08)   письмо автору
 
   для: B-Rhyme   (25.03.2012 в 14:50)
 

Если у вас проект настроен нормально, то следующая программа должна вывести строку с версией PostgreeSQL-сервера (разумеется нужно подставить свои логин и пароль в строку conninfo).
#include <iostream>
#include <libpq-fe.h>
#pragma comment(lib, "libpq.lib")

using namespace std;

int main(int argc, char **argv)
{
  // Дескриптор соединения с базой данных
  PGconn *conn;
  // Дескриптор результирующей таблицы
  PGresult *res;
  // Параметры соединения
  const char * conninfo = "dbname = postgres user=postgres password=pass";

  // Устанавливаем соединение (ВНИМАНИЕ имя вашей базы данных)
  conn = PQconnectdb(conninfo);
  // Убеждаемся в том, что соединение установлено
  if (PQstatus(conn) != CONNECTION_OK)
  {
    cout << "Connection to database failed: " << PQerrorMessage(conn) << endl;
    system("pause");
    return 1;
  }
  // Выполняем запрос
  res = PQexec(conn, "SELECT VERSION();");
  if (PQresultStatus(res) != PGRES_TUPLES_OK)
  {
    cout << "SQL-query failed: " << PQerrorMessage(conn) << endl;
    PQclear(res);
    system("pause");
    return 1;
  }
  // Выводим результат
  cout << PQgetvalue(res, 0, 0) << endl;
  // Освобождаем память, выделенную под результирующую таблицу
  PQclear(res);
  // Закрываем соединение с базой данных
  PQfinish(conn);

  // Пауза перед закрытием
  system("pause");
  return 0;
}

  Ответить  
 
 автор: B-Rhyme   (27.03.2012 в 21:23)   письмо автору
 
   для: cheops   (25.03.2012 в 19:08)
 

Извините за, откровенно, тупой вопрос - а куда код скопипастить? =))
В Visual Studio?


Вы говорите, что не нужно использовать Qt. А почему? Я читал в книге по Qt что имеется связь со специальным драйвером PSQL. Только вот никак не могу заставить их собраться.

  Ответить  
 
 автор: cheops   (27.03.2012 в 22:11)   письмо автору
 
   для: B-Rhyme   (27.03.2012 в 21:23)
 

>Извините за, откровенно, тупой вопрос - а куда код скопипастить? =))
>В Visual Studio?
Ну я да, отлаживал в Visual Studio (консольный проект)

>Вы говорите, что не нужно использовать Qt. А почему? Я читал в книге по Qt что имеется связь со
>специальным драйвером PSQL. Только вот никак не могу заставить их собраться.
Сначала заставьте этот пример работать - может у вас проблемы с сервером или с клиентской библиотекой. Можно и с оболочкой Qt "разобраться", только имя её называйте, я в Qt набегами бываю, а уж PostgreeSQL вообще её ни разу не соединял, я бы работал напрямую с сервером, возможно в Qt есть более удобные средства.

  Ответить  
 
 автор: B-Rhyme   (27.03.2012 в 22:19)   письмо автору
 
   для: cheops   (27.03.2012 в 22:11)
 

Я пробовал в Студии. Скопировал код, скопировал libpq-fe.h в каталог с программой, проект не консольный создал, а типа Win32 -> Пустой.
Выдаёт просот сотню ошибок. =((

Понял. Буду стараться сделать сначала это.

  Ответить  
 
 автор: cheops   (27.03.2012 в 23:36)   письмо автору
 
   для: B-Rhyme   (27.03.2012 в 22:19)
 

>Добавил в переменную окружения PATH пути: C:\PostgreSQL\bin;C:\PostgreSQL\include;C:
>\PostgreSQL\lib
Меня несколько смутила эта строка, я подумал, может у вас и проект уже настроен. А вообще нужно еще и в самом проекте произвести настройки
1) Проект->Свойства проекта->C/C++->Общие->Дополнительные каталоги включаемых файлов C:\PostgreSQL\include
2) Проект->Свойства проекта->Компоновщик->Общие->Дополнительные каталоги библиотек C:\PostgreSQL\lib

PS В любом случае тащите сюда ошибки, без них сложно посоветовать куда лучше копать, так как от сюда не видно, что происходит.

  Ответить  
 
 автор: B-Rhyme   (03.04.2012 в 23:33)   письмо автору
 
   для: cheops   (27.03.2012 в 23:36)
 

Добавил в свойства проекта пути к либам.
Но, результат по-прежнему тот же =((

1>------ Построение начато: проект: Test_PS, Конфигурация: Debug Win32 ------
1>Построение начато 03.04.2012 22:32:38.
1>PrepareForBuild:
1> Создание каталога "c:\users\b-rhyme\documents\visual studio 2010\Projects\Test_PS\Debug\".
1>InitializeBuildStatus:
1> Создание "Debug\Test_PS.unsuccessfulbuild", так как было задано "AlwaysCreate".
1>ClCompile:
1> Test_PS.cpp
1>LINK : fatal error LNK1104: не удается открыть файл "libpq.lib"
1>
1>СБОЙ построения.
1>

  Ответить  
 
 автор: B-Rhyme   (14.04.2012 в 12:57)   письмо автору
 
   для: cheops   (27.03.2012 в 23:36)
 

У меня получилось такое:

PostgreSQL 9.1.2, compiled by Visual C++ build 1500, 32-bit
Для продолжения нажмите любую клавишу . . .

Это то, что нужно???? = ))
Пожалуйста, отзовитесь. Очень нужна ваша помощь.

  Ответить  
 
 автор: cheops   (14.04.2012 в 17:19)   письмо автору
 
   для: B-Rhyme   (14.04.2012 в 12:57)
 

Да, это именно то, что нужно, вы обратились к PostreSQL, запросили версию сервера, и вывели её в консоль. Если бы сервер не работал бы или связь с сервером не осуществлялась бы, то получить этой строки вам бы не удалось. Теперь можно переходить к более сложным примерам.

  Ответить  
 
 автор: B-Rhyme   (14.04.2012 в 21:04)   письмо автору
 
   для: cheops   (14.04.2012 в 17:19)
 

А как именно сделать графический интерфейс для моей БД ?

Вы могли бы помочь с написанием такого интерфейса? От этого, действительно, многое в жизни прямо зависит= ))

  Ответить  
 
 автор: cheops   (17.04.2012 в 21:58)   письмо автору
 
   для: B-Rhyme   (14.04.2012 в 21:04)
 

А сколько времени есть на задачу, просто я прямо сейчас сильно в дороге, ни интернета нормального нет, ни Qt с собой (только C++ Visual Studio Express).

  Ответить  
 
 автор: B-Rhyme   (18.04.2012 в 00:51)   письмо автору
 
   для: cheops   (17.04.2012 в 21:58)
 

Совсем мало. 24 апреля, вроде как, последний срок.

  Ответить  
 
 автор: Patriot_dar   (21.04.2012 в 16:50)
 
   для: B-Rhyme   (18.04.2012 в 00:51)
 

Здравствуйте, наткнулся на вашу тему, занимаюсь аналогичной проблемой, делал все по вашему примеру, только вот выходят немного другие ошибки:
------ Построение начато: проект: Fifth QT, Конфигурация: Debug Win32 ------
1>Построение начато 21.04.2012 15:48:06.
1>InitializeBuildStatus:
1> Обращение к "Debug\Fifth QT.unsuccessfulbuild".
1>PreBuildEvent:
1> main.cpp(0): Note: No relevant classes found. No output generated.
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQfinish в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQgetvalue в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQclear в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQresultStatus в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQexec в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQerrorMessage в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQstatus в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _PQconnectdb в функции _main
1>C:\Users\ЯрославчеГ\documents\visual studio 2010\Projects\Fifth QT\Debug\Fifth QT.exe : fatal error LNK1120: 8 неразрешенных внешних элементов
1>
1>СБОЙ построения.

  Ответить  
 
 автор: cheops   (21.04.2012 в 19:26)   письмо автору
 
   для: Patriot_dar   (21.04.2012 в 16:50)
 

У вас линковщик не видит библиотеки libpq.lib - путь к ней вероятно не прописан в переменной окружения PATH. В этом случае нужно убрать строку
#pragma comment(lib, "libpq.lib")
и указать путь к библиотеке в свойствах проекта.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования