crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Что за ошибка?
mezmay
  опции профиля:
сообщение 25.4.2011, 17:27
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Первый раз решил использовать базу данных. Написал по примеру:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Tests");
    db.setUserName("Ivan");
    db.setHostName("localhost");
    db.setPassword("password");

    bool b = db.open();
    if(!b)
        QString error = db.lastError().text();

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
- - Borodeys   Вот моя проблема из соседнего обсуждения : Занима...   27.4.2011, 20:05
- - 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


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.4.2024, 20:56