![]() |
|
|
![]()
|
|
| Acer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Привет всем. Пишу приложение, которое коннектится к БД с помощью Qt(4.4.0)
Вот начало моего класса, который называется RData:
Компиляция вылетает с вот такой ошибкой:
Подскажите, в чем я ошибся и почему компилятор не видит класс QSqlDatabase? ps. компилятор gcc |
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
А точно ли в этом месте ругается? Вроде бы всё правильно... |
|||
|
||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
лично меня смутила вот эта строка
обычно если наследуют пишут public, а не private оно? -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Так
либо так
Хоть в ассистанте и написано
Но так не видит компилятор. Видимо косяк в генерилке документации. |
||||||
|
|||||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Сегодня утром нашло просветление в голову. Вроде разобрался с ошибкой.
Сделал следующее - добавил в файл *.pro вот эту строку:
Вроде заработало. Всем спасибо |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Все правильно, qmake добавляет инклюд в мейк-файл в зависимости от прописанных модулей в .pro файле:
Потому и не находил. Значит с документацией все в порядке. |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
||||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Прога то скомпилилась... Но появилась еще одна проблема.
Доступные драйвера - QSQLITE, QODBC, QODBC3. А тех, что мне надо ( QMYSQL и QOCI ) нету :( Подскажите, как работать с Oracle и MySQL ? Это сообщение отредактировал(а) Acer - 22.7.2008, 13:05 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Собрать плагинами драйвера. При этом потребуются заголовочные и либ файлы от MySQL. С ораклом - по-моему, только библиотека (она ставится отдельным пунктом) - может туплю
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Кстати так и не нашел нигде списка SQL драйверов которые не входят в стандартную поставку Open Source Edition дистрибутива из-за конфликта лицензий. Об этом просто написано в ассистенте, но перечислены все как поддерживаемые. |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Да, насчёт оракла, действительно, я протупил
|
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Подскажите, как работать с плагинами?
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Плагины для СУБД загружаются самим фреймворком Qt. О том как их собрать и куда поместить - написано в ассистенте.
|
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Ассистент большой. Я не все могу понять. Может из-за несовершенства моего английского. Можно пример или никто не знает, как это делается?
|
|||
|
||||
| Acer |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Я проделал следующее:
Затем скопировал в проект файлы
Компилирую и вот что получается:
Народ, пожалуйста, хэлп ми... |
||||||
|
|||||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
http://doc.trolltech.com/4.4/sql-driver.html
Там есть подробные "хау-ту билд xxx плагин" (само собой это доступно и из ассистента). |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Ну а пост выше ты видел? Я же написал, что все сделал. Там написанно как сбилдить. А потом что делать? как поключать этот плагин? |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Кинуть в папку %QTDIR%\plugins\sqldrivers. Ещё есть вариант с qmake.conf (прописать в нём папочку с плагинами SQL-драйверов). Это тоже есть в ассистенте + обсуждалось на форуме.
Добавлено через 2 минуты и 50 секунд Зачем? Нет не видел |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Вобщем, смотри. Я сделал как написанно в асистенте. И как писал выше в посте.
В директории %QTDIR%/src/plugins/sqldrivers/odbc появились три мейкфайла, main.cpp ... и директория tmp, в которой так же есть пустые директории. В директории %QTDIR%/plugins/sqldrivers появилась либа libqsqlodbc4.a. Это то, что нужно? И последний вопрос: Как ее использовать? Асистент читал. Не нашел использование плагинов. |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
||||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Есть вот такая dll
qsqlodbc4.dll |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
ODBC драйвер и так доступен без отдельной компиляции как плагин. Но минус в том, что для каждого компьютера нужно ставить тогда ODBC драйвер того сервера к которому идет обращение MySQL, MSSQL, PosgreSQL и настраивать DSN в панели управления. В общем это не самый лучший выбор.
|
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Я уже не знаю, что и делать...
Искал в инете про коннект к базам в венде, там все описанно только для борланда или MSVC. :( |
|||
|
||||
| Acer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Народ, как бороться с этим:
? Вот кусок кода подключения:
|
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В setDatabaseName() я обычно передаю DSN имя. Его предварительно нужно создать тут:
|
|||
|
||||
| Acer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Сделал юзерский дсн. Указал в строке коннекта:
Но все равно таже самая ошибка. И еще, хочу задать вопрос. Надо будет настраивать User DSN на всех машинах, на которых будет использоваться моя программа? ------
вот это возвращает true Это сообщение отредактировал(а) Acer - 27.7.2008, 20:17 |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Можно просто setDatabaseName("prochee");
Ага, на каждой тачке придется ставить ODBC драйвер сервера к которому коннектишься и прописывать DSN имя. Потому я и говорил, что odbc хоть и работает со всеми серверами, но это не лучший выбор, если сервера mysql или posgresql. |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
SABROG, спасибо! Заработало после долгих мучений..
у меня серваки - MSSQL и Oracle. К ним надо коннектица. Подскажи, есть ли альтернатива того, чтобы на каждой машине не проделывать работу по настройке DSN ? Может просто строку DSN писать в QSqlDatabase::setDatabaseName( "" )? Если так можно, то где взять ее? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Попробуй создай пустой файл с .udl расширением. Затем кликни по нему 2 раза и настрой соединение в появившемся диалоге. Потом открой этот файл в текстовом редакторе и скопируй строку оттуда. Не уверен что поможет, но попробывать стоит. Это сообщение отредактировал(а) SABROG - 28.7.2008, 08:32 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
.udl - это для OLE DB (онли винда).
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Тогда давайте так. Вот ресурсы на так называемые Connection Strings:
http://www.devlist.com/ConnectionStringsPage.aspx http://www.connectionstrings.com/ http://www.carlprothman.net/Default.aspx?tabid=81 |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Спасибо.
Попробую в четверг, когда буду на работе. Дома нет MSSQL сервера. |
|||
|
||||
| Acer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Законнектился вот такой строкой.
-------------------------------------- Запустил приложение на другой машине:
Чего там не хватает? Это сообщение отредактировал(а) Acer - 1.8.2008, 21:24 |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Скорее всего у тебя драйвер собран как плагин. Путь к плагинам статически прописывается в QtCore.dll, при переносе на другую машину этого пути ессно не существует. В ассистенте написано как указать программе где искать плагины. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |