Здравствуйте, гость ( Вход | Регистрация )
|
mezmay |
25.4.2011, 17:27
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1
|
Первый раз решил использовать базу данных. Написал по примеру:
error содержит: error = "[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect" |
|
|
|
![]() |
|
Borodeys |
27.4.2011, 20:05
Сообщение
#2
|
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 10.4.2011 Пользователь №: 2588 Спасибо сказали: 0 раз(а) Репутация: 0
|
Вот моя проблема из соседнего обсуждения :
Занимаюсь аналогичной проблемой уже длительное время. Подключение к БД осуществляется следующим образом создаем файл connection.h: #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError> #include <QtSql> static bool createConnection() { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("такая_то_база"); db.setUserName("логин_такой_то"); db.setPassword("пароль_эдакий"); bool connected = db.open(); if (!connected) { QMessageBox::critical(0, ("connection.h "),"Cannot open database =[\n " +(db.lastError().text()), QMessageBox::Cancel); return false; } } #endif // CONNECTION_H Затем из main.cpp обращаемся к данному заголовочному файлу: #include <QtGui/QApplication> #include "mainwindow.h" #include "connection.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.driverName()="count"; app.addLibraryPath("pugins"); if (!createConnection()){ QMessageBox::critical(0, ("main.cpp"),"Cannot open database =[\n" +(db.lastError().text()), QMessageBox::Cancel); return 1; } MainWindow w; w.show(); return app.exec(); } Затем, если у тебя window xp и MSSQL server, создаем драйвер подключения с именем нашей базы данных Панель управления\ Администрирование\Источники данных (ODBC)\вкладка Системный DSN кнопочка добавить Выбираем драйвер SQL Server Native Client и указываем его имя, как имя нашей базы данных. Барабанная дробь........... Тада, теперь можно подключаться к ODBC базе данных. Однако здесь только все начинается, по умолчанию QT использует только драйвера SQLite, а нам же нужен драйвер qsqlodbc4.dll и libqsqlodbc4.lib, которые лежат в папке qtdir\qt\plugins\sqldrivers. Увы, как их подключить я не знаю, необходимо что-то прописать в .pro файле. При компиляции massegeBox из main.cpp говорит следующее: Driver not loaded. Driver not losaded. Вот результаты компиляции: Запускается C:\Qt\TechJ\TechJ-build-desktop\debug\TechJ.exe... QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed. C:\Qt\TechJ\TechJ-build-desktop\debug\TechJ.exe завершился с кодом 1 Подозреваю, что проблема в библиотеках, вернее в их отсутствии. |
|
|
|
mezmay Что за ошибка? 25.4.2011, 17:27
maint Цитата(mezmay @ 25.4.2011, 23:27) Первый ... 25.4.2011, 17:59
Litkevich Yuriy Цитата(mezmay @ 25.4.2011, 20:27) Первый ... 25.4.2011, 19:58
Гость Цитата(Litkevich Yuriy @ 25.4.2011, 19:58... 27.4.2011, 17:56
mezmay Почему этот код работает (отображается таблица с д... 26.4.2011, 10:47
silver47 Вместо:
QSqlDatabase db = QSqlDatabase::addDatabas... 26.4.2011, 10:50
mezmay а какая разница? объект QSqlDatabase все равно оди... 26.4.2011, 10:52
silver47 ну попробуем по-другому... покажите вывод qDebug(... 26.4.2011, 10:56
mezmay Раскрывающийся текст bool b = createConnection... 26.4.2011, 12:50
silver47 if(!query.exec(str)) qDebug... 26.4.2011, 12:59
mezmay Вообще данные есть - открывал создавшуюся базу в т... 26.4.2011, 13:07
silver47 В заголовочном файле:
QSqlTableModel *m_model;
В ... 26.4.2011, 13:29
mezmay Заработало! думаю проблема была в том что
m_mo... 27.4.2011, 8:47
Litkevich Yuriy Цитата(Гость_Гость_* @ 27.4.2011, 20:56) ... 27.4.2011, 18:18
silver47 Цитата(Borodeys @ 27.4.2011, 22:05) Однак... 28.4.2011, 5:01
Litkevich Yuriy Borodeys, форматируй код (тэг: code) 28.4.2011, 10:11
Borodeys Вуху, заработало! Огромное спасибо silver47.
А... 29.4.2011, 12:53
silver47 Ну во-первых WHERE (условие) AND (условие).
Во-вто... 29.4.2011, 14:42![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 16.12.2025, 11:08 |