Russian Qt Forum

Qt => Базы данных => Тема начата: KBAC от Декабрь 10, 2011, 20:57



Название: Как почерпнуть что-то полезное из lastError()
Отправлено: KBAC от Декабрь 10, 2011, 20:57
Ошибка открытия БД. Я думаю поможет lastError, но не знаю как посмотреть инфу об ошибке.


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: LisandreL от Декабрь 10, 2011, 21:23
В справке же всё написанно:
QSqlError::type() - тип ошибки. По идее у вас должно быть QSqlError::ConnectionError == 1.

QSqlError::text() - текст ошибки, может как содержать полезную информацию, так и быть просто отпиской, а может и пустой строкой - всё зависит от драйвера.

QSqlError::number() - номер ошибки, можно попробовать поискать в документации к БД, если предыдущий пункт не помог.

Ну и чтобы эти функции вызывались от lastError надо подключить #include <QSqlError>


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: KBAC от Декабрь 10, 2011, 22:24
А что делать если дебаггер пишет:
Код:
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: Rem Norton от Декабрь 10, 2011, 22:39
Тут 2 варианта:
1. Использовать SQLite
2. Установить ODBC


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: KBAC от Декабрь 10, 2011, 22:50
Обнаружилось, что вообще только SQLite драйвер присутствует.


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: Rem Norton от Декабрь 10, 2011, 22:58
Ну, поехали по классической схеме: какая система, версия Qt, источник установки (собирал из исходников, бинари, репозиторий...)?


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: KBAC от Декабрь 10, 2011, 23:00
Скачал на днях с сайта SDK для windows. А очень сложно настроить QODBC или написать свой драйвер?


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: Rem Norton от Декабрь 10, 2011, 23:56
ODBC должен быть. Значит установи вот это: http://www.microsoft.com/downloads/ru-ru/details.aspx?FamilyID=78cac895-efc2-4f8e-a9e0-3a1afbd5922e


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: KBAC от Декабрь 11, 2011, 00:22
Сомневаюсь, что в этом проблема. Но все таки попробую.
В папке  qtsdk, в которой и лежит сама библиотека, во-первых нет папки src (как в руководствах пишут), во-вторых sqldrivers лежит в C:\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers. В этой папке лежит только ..sqllite..
Я создал папку odbc и засунул туда main.cpp , Makefile, odbc.pro. В командной строке вошел в эту папку пишу "qmake -o Makefile odbc.pro " и cmd не узнает команду.


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: LisandreL от Декабрь 11, 2011, 00:27
ODBC должен быть.
Что ж вы людей путаете? Не идут сейчас в SDK никакие драйверы, кроме SQLite v3.

Скачал на днях с сайта SDK для windows. А очень сложно настроить QODBC или написать свой драйвер?
0) Если ставили без исходников, доустанавливаете их через updater (Справка > Start Updater). Разумеется берите исходники той же версии Qt, с которой будете работать.
1) Идёте в QtSources\4.7.4\src\plugins\sqldrivers\odbc
2) Собираете релизную и дебажную версии библиотеки (можно через Qt Creator).
3) Кладёте 2 полученные dll в папку sqldrivers.


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: Rem Norton от Декабрь 11, 2011, 00:29
Мдя... ну просю пардона. Давненько я виндой не пользовался.


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: KBAC от Декабрь 11, 2011, 00:38
LisandreL, а можно прямо все на пальцах объяснить, а то я совсем ниче не понимаю в сборке библиотек. Если после прочтения Справка > Start Updater, то можно не расписывать.
Конкретно не понятно что за папка src? Самому ее создать ? Потому что у меня в qtsrc\4.7.4\ только mingw и msvc2008 лежит, а вот уже в mingw plugins. Папка qtsrc это папка Qt из моего прошлого сообщения.
И где почитать про то, как собирать " релизную и дебажную версии библиотеки"?

Rem Norton, MDAC не помог.


Название: Re: Как почерпнуть что-то полезное из lastError()
Отправлено: LisandreL от Декабрь 11, 2011, 01:38
Если после прочтения Справка > Start Updater, то можно не расписывать.
Не понял вас. 0-ой этап прошёл успешно? Папка QtSources появилась?

Конкретно не понятно что за папка src?
Я такую папку не упоминал. Видимо вы какую-то старую инструкцию читаете. Раньше исходники Qt лежали в src, сейчас в QtSources и по умолчанию не устанавливаются.

Самому ее создать ?
Ничего самому создавть не надо.

Потому что у меня в qtsrc
Про эту папку я тоже ничего не говорил.


И где почитать про то, как собирать " релизную и дебажную версии библиотеки"?
Если через Qt Creator, то ровно так же, как и проект. Открываете pro файл, выбираете в диалоге чем будете собирать и будет ли сборка теневой.
Выбираете отладочную сборку, Сборка > Собрать всё.
Выбираете релизную сборку, Сборка > Собрать всё.
Всё, ничего сложного.