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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Postgre+Qt  (Прочитано 8090 раз)
bez_glaz
Гость
« : Сентябрь 14, 2011, 15:38 »

Здравствуйте, я новичёк в освоении qt postgre и linux в том числе =)
Вобщем проблема заключается в следующем:
юзаю pgAdmin, с помощью него создаю элементарную базу с 1 таблицей в которой 1 поле (ессесно без ключей всяких и тд и тп), права ставлю паблик и всё по максимум
в самом приложении коннект к базе осуществляется корректно но вот на элементарный запрос
if (query.exec("SELECT asd FROM qwer"))
w.ui->label->setText("net");
w.ui->label_2->setText(query.lastError().text());
выдаёт в label_2 ERROR: relation "qwer" does not exist, ну и соответственно label остаётся неизменным.
Уже 2 дня ломаю голову почему так?!
Вроде как понял что-то с БД, то ли что-то в опциях не указал то-ли ещё что-то.
Заранее спасибо!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 14, 2011, 15:41 »

Покажи как коннектишься к БД.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
bez_glaz
Гость
« Ответ #2 : Сентябрь 14, 2011, 15:50 »

#define DEFAULT_DB_HOSTNAME     "localhost"
#define DEFAULT_DB_NAME         "ras4et"
#define DEFAULT_DB_USERNAME     "postgres"
#define DEFAULT_DB_PASSWORD     "postgres"

    QSettings settings;
    // Считываем настройки
    QString HostName = settings.value("HostName", DEFAULT_DB_HOSTNAME).toString();
    QString DatabaseName = settings.value("DatabaseName", DEFAULT_DB_NAME).toString();
    QString UserName = settings.value("UserName", DEFAULT_DB_USERNAME).toString();
    QString Password = settings.value("Password", DEFAULT_DB_PASSWORD).toString();
    // Записываем настройки
    settings.setValue("HostName",HostName);
    settings.setValue("DatabaseName",DatabaseName);
    settings.setValue("UserName",UserName);
    settings.setValue("Password",Password);

    // подключаемся к БД
    db.setHostName(HostName);
    db.setDatabaseName(DatabaseName);
    db.setUserName(UserName);
    db.setPassword(Password);



первоночально коннектился просто


    db.setHostName("localhost");
    db.setDatabaseName("ras4et");
    db.setUserName("postgres");
    db.setPassword("postgres");


оба варианта дали положительный результат при проверки:

bool ok=db.open();
w.ui->label->setText("111")

    if (ok)
         w.ui->label->setText("123") ;else w.ui->label->setText("321");
Записан
Fess
Гость
« Ответ #3 : Сентябрь 14, 2011, 16:07 »

через pgAdmin запросы работают без проблем?
Записан
cya-st
Гость
« Ответ #4 : Сентябрь 14, 2011, 18:28 »

я бы еще порт указал:
Код:
db.setPort(Port);
Записан
Rem Norton
Гость
« Ответ #5 : Сентябрь 14, 2011, 20:49 »

Есть такой косячок с PostgreSQL. Просто укажите в запросе схему, в которой создана таблица. Рискну предположить, что это схема "public", тогда правильный запрос будет выглядеть так:
Код:
SELECT asd FROM public.qwer
Записан
bez_glaz
Гость
« Ответ #6 : Сентябрь 15, 2011, 09:26 »

Значит так:
Во-первых добавление порта ничего не изменило, т.к. сказал уже что коннектится база без проблем;
Во-вторых попробывал в pgAdmin запросы потестить и увидел интересную штуку, после того как воспользовался функцией "графический запрос", запрос на языке sql программа составила сама автоматически и выборка выглядела следущем образом -
Код:
SELECT qwer.asd FROM  public.qwer;
Как понял обращение тут идёт равносильно классовому, но перенеся запрос в код программы выдал всю ту же печальную ошибку =(
Попробовал заполнить поля и сохранил результат запроса из pgAdmin в файл - запрос дал положительный результат, т.е. в файле оказались все верные данные.
Какие ещё сть размшление что может быть ?
« Последнее редактирование: Сентябрь 15, 2011, 09:30 от bez_glaz » Записан
bez_glaz
Гость
« Ответ #7 : Сентябрь 15, 2011, 09:44 »

полностью зашёл в тупик в редакторе SQL запросов попробовал прописать
Код:
SELECT asd FROM qwer;
вывел всё тот же удовлетворяющий результат, т.е. обращение через точку можно было и опустить как бы, вобщем всё так же остаётся проблема обращения к таблицам из приложения!
Записан
Disaron
Гость
« Ответ #8 : Сентябрь 15, 2011, 10:52 »

1. Тебе бы про SQL прочесть;
2. Где QSqlDatabase? Со всеми необходимыми сведениями.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Сентябрь 15, 2011, 10:54 »

Покажи, как определяешь db.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
bez_glaz
Гость
« Ответ #10 : Сентябрь 15, 2011, 10:58 »

1. Тебе бы про SQL прочесть;
2. Где QSqlDatabase? Со всеми необходимыми сведениями.

Сильно вникать в SQL мне нет нужды моя непосредственная сфера деятельности этого не включает
Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
вот кусок кода который Вы требовали
Ещё раз повторяю коннект идёт корректрый, я всё 100 раз тестил пробовал другие данные порты и драйвера, сразу же на них ругался, так что можно сделать логический вывод, что проблема возникает уже после коннекта, хотя хз...
Записан
bez_glaz
Гость
« Ответ #11 : Сентябрь 15, 2011, 11:00 »

Покажи, как определяешь db.
Как я понял это ?
Код:
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Сентябрь 15, 2011, 11:01 »

Вроде, все нормально. Просто за всю мою работу с постгресом я с такими проблемами не сталкивался.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
bez_glaz
Гость
« Ответ #13 : Сентябрь 15, 2011, 12:43 »

Вроде, все нормально. Просто за всю мою работу с постгресом я с такими проблемами не сталкивался.
Я как бы то же не новичёк в программировании, хоть и опыт мал, но с БД имел дело и с ЯВУ тоже работал, по идеи то же всё верно делаю, но факт остаётся фактом не хочет и всё, пишит что не создана такая таблица и вот ты хоть провались.
Я уже 4-ый день читаю по Qt книжку и параллельно синтаксис и документацию к Postgre и не нахожу решение своей прблемы!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #14 : Сентябрь 15, 2011, 12:46 »

А вообще какие-нибудь другие sql запросы отрабатываются? Допустим, создание таблицы или селекты из системных таблиц?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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