Russian Qt Forum
Сентябрь 30, 2024, 16:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Qt + PostgreSQL  (Прочитано 21125 раз)
almareta
Гость
« : Август 09, 2010, 10:04 »

Здравствуйте!Я с вопросом, никак не могу разобраться.Нашла урок по Qt http://symmetrica.net/qt4/lesson1.htm в котором работают с базой данных.
Сделала всё как описано - не выходит, попробовала скачать исходники и скомпилировать(предварительно описав в консоли вышеуказанные команды) - тоже не выходит.Пишет,как указано в коде,"БД не найдена".
С PostgreSQL работала через pgAdmin 3 (v 1.10.0), так более наглядно(с SQL запросами достаточно не плохо знакома, умею создавать таблицы, заполнять данными и "вытаскивать" нужную информацию ).
Пожалуйста помогите разобраться!

Вот код

main.cpp
Код:
#include <QtDebug>
#include <QtGui>
#include <QSqlDatabase>
#include <QSqlQueryModel>
#include <QSqlError>
#include <QTableView>
 
 
int main(int argc, char *argv[])
{
        QApplication app(argc, argv);
       
        QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
        db.setHostName("localhost");
    db.setDatabaseName("testdb");
    db.setUserName("andrei");
    db.setPassword("letmein");
    if (!db.open())
        {
                qDebug() << QObject::trUtf8("Бд не найдена") << db.lastError().text();
                return -1;
        }
       
        QSqlQueryModel * model = new QSqlQueryModel(0);
        model->setQuery("SELECT * FROM music");
        model->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("Автор"));
        model->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Альбом"));
        model->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Произведение"));
        model->setHeaderData(3, Qt::Horizontal, QObject::trUtf8("Год выхода"));
       
        QTableView * view = new QTableView(0);
        view->setModel(model);
        view->setWindowTitle(QObject::trUtf8("Музыкальный каталог"));
        view->show();
       
        return app.exec();
}

tableviewer.pro
Код:
TEMPLATE = app
QT += sql
 
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
SOURCES += main.cpp

Версия PostgreSQL 8.4.2
OC Linux
Записан
crossly
Гость
« Ответ #1 : Август 09, 2010, 10:49 »

а b.lastError().text() что говорит??
Записан
almareta
Гость
« Ответ #2 : Август 09, 2010, 10:54 »

"Бд не найдена"

Проблема заключается ещё в следующем. В уроке написано

...запустите сервер PostrgeSQL а вашем компьютере. Далее командуйте
createdb testdb
теперь войдите в консольный клиент PostrgeSQL:
psql testdb
и скомандуйте
\i createtable.sql


Ввожу консоль psql вышеприведённые команды.
После строчки \i createtable.sql пишет
"Нет такого файла или каталога"
Записан
crossly
Гость
« Ответ #3 : Август 09, 2010, 11:13 »

ну дык там же написано http://symmetrica.net/qt4/qt4-1src.tar.gz там есть этот файлик
Записан
almareta
Гость
« Ответ #4 : Август 09, 2010, 11:15 »

Собственно я и компилирую то, что в примере )
Записан
almareta
Гость
« Ответ #5 : Август 09, 2010, 11:59 »

Возможно я что-то неправильно делаю...
Записан
mega
Гость
« Ответ #6 : Август 09, 2010, 13:00 »

А драйвер для постгре собирали? По умолчанию его нет. По пути qt\plugins\sqldrivers (может и другой путь) на вашем компьютере должны лежать файлы для различных БД. Посмотрите там. Если нет, то читайте мануалы по сборке.
Вот ссылка на офиц. руководство http://doc.qt.nokia.com/4.5/sql-driver.html#how-to-build-the-qpsql-plugin-on-unix-and-mac-os-x.
« Последнее редактирование: Август 09, 2010, 13:05 от mega » Записан
crossly
Гость
« Ответ #7 : Август 09, 2010, 13:00 »

там есть нужный тебе *.sql файл
Записан
almareta
Гость
« Ответ #8 : Август 09, 2010, 13:18 »

Спасибо за столь оперативные ответы! Улыбающийся
Сейчас буду пытаться.
Записан
almareta
Гость
« Ответ #9 : Август 09, 2010, 13:32 »

Ввожу в консоль то, что пишут в документации:
Код:
cd $QTDIR/src/plugins/sqldrivers/psql
qmake "INCLUDEPATH+=/usr/include/pgsql" "LIBS+=-L/usr/lib -lpq" psql.pro
make

Нет такого файла или каталога.
Вопрос как мне узнать директорию куда Qt установлен.Устанавливался он вообще через Synaptic.
Записан
crossly
Гость
« Ответ #10 : Август 09, 2010, 14:31 »

qmake -v
Записан
almareta
Гость
« Ответ #11 : Август 09, 2010, 14:39 »

показал путь /usr/lib/

Только там нет папки plugins или хоть что-то касающееся SQL
Записан
BRE
Гость
« Ответ #12 : Август 09, 2010, 15:05 »

показал путь /usr/lib/

Только там нет папки plugins или хоть что-то касающееся SQL
Посмотри в /usr/lib/qt4
Записан
кып
Гость
« Ответ #13 : Август 09, 2010, 15:12 »

Вопрос как мне узнать директорию куда Qt установлен.Устанавливался он вообще через Synaptic.
Установи драйвер для postgresql через Synaptic и будет щастье.
Поищи пакет что-то вроде libqt4-pgsql
Записан
almareta
Гость
« Ответ #14 : Август 09, 2010, 15:25 »

показал путь /usr/lib/

Только там нет папки plugins или хоть что-то касающееся SQL
Посмотри в /usr/lib/qt4

Папку с плагинами нашла, дров под Postgre там не было.Нашла через Synaptic плагин, загрузила, установила.В папке появился ещё один файл libqsqlpsql.so. Скомпилировала прогу.Появилась следующая ошибка.

Starting /home/gorans/QT profects/qt4-1src/tableviewer...
"Бд не найдена" "FATAL:  database "testdb" does not exist
QPSQL: Unable to connect"
/home/gorans/QT profects/qt4-1src/tableviewer exited with code 255

Где и что я ещё забыла создать/сделать?)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 21.