2012-01-06 4 views
1

я получил следующую проблему с драйвером QODBC:драйвера ODBC Qt не загружается

bool Dialog::createOdbcConnection(QSqlDatabase * db, QString odbcName,QString user,QString pass) 
{ 
    db = new QSqlDatabase(); 
    db->addDatabase("QODBC"); 
    db->setDatabaseName(odbcName); 
    if(!user.isEmpty()) 
     db->setUserName(user); 
    if(!pass.isEmpty()) 
     db->setPassword(pass); 

    qDebug() << QSqlDatabase :: drivers(); 

    if (!db->open()) 
    { 
      QMessageBox mgs; 
      qDebug() << db->lastError().text(); 
      mgs.setText(db->lastError().text()); 
      mgs.exec(); 
      return false; 
    } 

    return true; 
} 

qDebug() << QSqlDatabase :: drivers(); возвращает ("QSQLITE", "QODBC3", "QODBC"), но программа не открывает свою базу данных, db-> Open() возвращает ложные и ошибка "Driver not loaded Driver not loaded"

ответ

1

Каково использование параметра QSqlDatabase в вашем методе createOdbcConnection? я предпочел бы удалить его оттуда, определить QSqlDatabase объект в классе-Definition:

private: 
    QSqlDatabase db_; 

и инициализировать его в классе-застройщиком:

db_ = QSqlDatabase::addDatabase("QODBC"); 

Это должно работать!

Смежные вопросы