Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt4]Соединение с БД 
:(
    Опции темы
Jagerntr
Дата 13.3.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Здравствуйте. При соединении с БД у меня возникла следущая проблема:
соединение открывается, структура полей таблицы возвращается правильной,но ни одной строки результата запроса нет,т.е. query.exec(strQuery) возвращает -1 все время. В таблице данные содержатся точно,на другом языке программирования код с той же самой логикой возвращает результат как надо.

Код

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("mydb");
    db.setUserName("uid");
    db.setPassword("pwd");
    bool connected = db.open();
    if (!connected) 
    {
        QMessageBox::critical(0, QObject::tr("Database Error"), db.lastError().text());
        return false;
    }
    QSqlQuery query;
    QString strQuery = "select * from mytable";
    if(!query.exec(strQuery))
        QMessageBox::critical(0, "Error", "Loading data failed", QMessageBox::Ok|QMessageBox::Default|QMessageBox::Escape, 0, 0);
    else
    {
        while(query.next())
        {
            // код....
        }
    }


СУБД IBM Informix 9.4

Это сообщение отредактировал(а) Jagerntr - 13.3.2008, 10:28
PM MAIL   Вверх
SABROG
Дата 13.3.2008, 11:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Напиши это и посмотри какую ошибку выводит:
Код

if(!query.exec(strQuery)) 
{
QMessageBox::critical(0, "Error", query.lastError().text(), QMessageBox::Ok|QMessageBox::Default|QMessageBox::Escape, 0, 0);
}


И так еще попробуй:

Код

QSqlQuery query(db);


Это сообщение отредактировал(а) SABROG - 13.3.2008, 11:59


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Jagerntr
Дата 25.3.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



соединение с базой проходит успешно, запрос так же вызывается без ошибки в этом месте,т.е. идет сразу на while(query.next())
Код

if(!query.exec(strQuery))
        QMessageBox::critical(0, "Error", "Loading data failed", QMessageBox::Ok|QMessageBox::Default|QMessageBox::Escape, 0, 0);
    else
    {
        while(query.next())
        {
            // код....
        }
    }


но ни одной записи не возвращает. Если же добавить код,возвращающий структуру таблицы,например какие столбцы участвуют в запросе,то результат верный,но самих данных запроса нет. Используется драйвер ODBC IBM Informix 3.82
PM MAIL   Вверх
Любитель
Дата 25.3.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



А с другого языка конектился через тот же ODBC-драйвер (анси/юникод кстати?)? Тот же источник данных?


--------------------
PM MAIL ICQ Skype   Вверх
Kappac
Дата 25.3.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 30.9.2006
Где: Украина, Киев

Репутация: нет
Всего: нет



К сожалению, ничего толкового не посоветую, но этот эффект 95% под юниксом, под виндой такая же реакция? В свое время пытался решить эту же проблему для МССКЛ и ОДБС, но попытки успехом не увенчались... 
--------------------
                                                                                     
PM MAIL ICQ Skype   Вверх
Jagerntr
Дата 26.3.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата

Любитель :
А с другого языка конектился через тот же ODBC-драйвер (анси/юникод кстати?)? Тот же источник данных? 

писал приложение на C#,используя тот же самый драйвер,и все работало правильно. 
Про кодировку не понял...в какой кодировке посылается запрос,это имели ввиду?
PM MAIL   Вверх
Любитель
Дата 26.3.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Нет - ODBC-драйвера обычно распространяются в двух версиях: анси и юникод.


--------------------
PM MAIL ICQ Skype   Вверх
Jagerntr
Дата 28.3.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



в настройках драйвера везде используется кодировка CP1251, следовательно ANSII.
PM MAIL   Вверх
Любитель
Дата 28.3.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Ну, вообще это кстати может вызвать проблемы теоретически... Что-то насчёт QODBC и не-юникод версий было сказано, что мол это не есть гуд...


--------------------
PM MAIL ICQ Skype   Вверх
Jagerntr
Дата 29.3.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



я посмотрел список кодировок, поддерживаемых данной СУБД - из тех, что поддерживают русский язык,а это обязательное условие - имеется только cp1251 и koi-8.Юникод только английский - пробовал изменять на него в настройках и соединение с БД уже не работало...
PM MAIL   Вверх
Jagerntr
Дата 7.4.2008, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



никто больше не сталкивался с этой проблемой?
PM MAIL   Вверх
Elfebet
Дата 7.4.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



Jagerntr, 
Цитата

Юникод только английский
  smile 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Jagerntr
Дата 22.4.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



да,забавно написалsmile...не подумавsmile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.