PDA

View Full Version : MS Sql native driver??



LordQt
9th October 2007, 11:44
Hello friends,

I try to connect to a ms sql 2005 database. So I first try to use the QODBC driver ( QtSQL).

Here is my Code:

#include <QtGui>
#include <QtSql>
#include <QDebug>

int main(int argc, char* argv[]) {
QApplication app(argc, argv);

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("localhost");
db.setDatabaseName("ExapleDB");
db.setUserName("Admin");
db.setPassword("admin");

if (!db.open()) {
QSqlError err = db.lastError ();
QMessageBox::information(0, QObject::tr("Fehler"), err.text());
return 1;
}
QTableView tableView;
QSqlTableModel model;
// --- Alle Daten abfragen ---
model.setTable("Artikel");
model.select();
model.setEditStrategy(QSqlTableModel::OnFieldChang e);
tableView.setModel(&model);
tableView.setWindowTitle("SQL-Demonstration");
tableView.show();
return app.exec();
}

I search for the Driver QODBC but I d´ont find it. I have install Qt by the installer 4.3.1.
Than I read the Docu and I read this

Note: You should use native drivers in preference to the ODBC driver where they are available. ODBC support can be used as a fallback for compliant databases if no native drivers are available.

First: Where can I found a native Driver for MS Sql 2005?
Second: How can I install the QODBC driver, because in the standard installation I have only the qsqlite4.dll?

wysota
9th October 2007, 12:14
There is no native driver for MS SQL, you have to use ODBC. First check if you have the driver installed in plugins/sqldrivers subdirectory of your Qt installation. Then check if you have ODBC installed in your system, as Qt driver relies on it.

LordQt
9th October 2007, 13:19
No, i have not the qodbc driver installed. I have install qt via the executable.
How can I post install the Driver?

LordQt
9th October 2007, 13:43
Hello friends,

when I try to compile the odbc driver I get some errors. What the hell is that??


tmp\obj\release_shared\qsql_odbc.o(.text+0xb445):q sql_odbc.cpp: undefined
tmp\obj\release_shared\qsql_odbc.o(.text+0xe18e):q sql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text+0xe24d):q sql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text+0xe26d):q sql_odbc.cpp: undefined reference to `_imp___ZN9QListData5eraseEPPv'
tmp\obj\release_shared\qsql_odbc.o(.text+0xe2ba):q sql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text+0xf412):q sql_odbc.cpp: undefined reference to `SQLBindParameter@40'
tmp\obj\release_shared\qsql_odbc.o(.text+0xf430):q sql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x14):qsql_odbc.cpp: undefined reference to `QSqlResult::setAt(int)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x18):qsql_odbc.cpp: undefined reference to `QSqlResult::setActive(bool)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x1c):qsql_odbc.cpp: undefined reference to `QSqlResult::setLastError(QSqlError const&)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x20):qsql_odbc.cpp: undefined reference to `QSqlResult::setQuery(QString const&)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x24):qsql_odbc.cpp: undefined reference to `QSqlResult::setSelect(bool)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x28):qsql_odbc.cpp: undefined reference to `QSqlResult::setForwardOnly(bool)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x34):qsql_odbc.cpp: undefined reference to `QSqlResult::savePrepare(QString const&)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x38):qsql_odbc.cpp: undefined reference to `QSqlResult::bindValue(int, QVariant const&, QFlags<QSql::ParamTypeFlag>)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x3c):qsql_odbc.cpp: undefined reference to `QSqlResult::bindValue(QString const&, QVariant const&, QFlags<QSql::ParamTypeFlag>)'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x6c):qsql_odbc.cpp: undefined reference to `QSqlResult::lastInsertId() const'
tmp\obj\release_shared\qsql_odbc.o(.rdata$_ZTV11QO DBCResult[vtable for QODBCResult]+0x70):qsql_odbc.cpp: undefined reference to `QSqlResult::virtual_hook(int, void*)'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE4freeEP16QVectorTypedDataIS0_E[QVector<QVariant>::free(QVectorTypedData<QVariant>*)]+0x25):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantD1Ev'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE4freeEP16QVectorTypedDataIS0_E[QVector<QVariant>::free(QVectorTypedData<QVariant>*)]+0x37):qsql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text$_Z17qRegi sterMetaTypeIPvEiPKcPT_[int qRegisterMetaType<void*>(char const*, void**)]+0x20):qsql_odbc.cpp: undefined reference to `_imp___ZN9QMetaType12registerTypeEPKcPFvPvEPFS2_P KvE'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE7reallocEii[QVector<QVariant>::realloc(int, int)]+0x8f):qsql_odbc.cpp: undefined reference to `_imp___Z8qReallocPvj'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE7reallocEii[QVector<QVariant>::realloc(int, int)]+0x11f):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantC1ERKS_'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE7reallocEii[QVector<QVariant>::realloc(int, int)]+0x1bb):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantD1Ev'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE7reallocEii[QVector<QVariant>::realloc(int, int)]+0x27b):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantD1Ev'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE7reallocEii[QVector<QVariant>::realloc(int, int)]+0x2e8):qsql_odbc.cpp: undefined reference to `_imp___ZN11QVectorData6mallocEiiiPS_'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE6resizeEi[QVector<QVariant>::resize(int)]+0x6c):qsql_odbc.cpp: undefined reference to `_imp___ZN11QVectorData4growEiiib'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE4fillERKS0_i[QVector<QVariant>::fill(QVariant const&, int)]+0x4d):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantC1ERKS_'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE4fillERKS0_i[QVector<QVariant>::fill(QVariant const&, int)]+0xad):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantaSERKS_'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE4fillERKS0_i[QVector<QVariant>::fill(QVariant const&, int)]+0xce):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantD1Ev'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN7QVect orI8QVariantE4fillERKS0_i[QVector<QVariant>::fill(QVariant const&, int)]+0x107):qsql_odbc.cpp: undefined reference to `_imp___ZN8QVariantD1Ev'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayE4freeEPN9QListData4DataE[QList<QByteArray>::free(QListData::Data*)]+0x3f):qsql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayE4freeEPN9QListData4DataE[QList<QByteArray>::free(QListData::Data*)]+0x63):qsql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayED1Ev[QList<QByteArray>::~QList()]+0x16):qsql_odbc.cpp: undefined reference to `_imp___ZN9QListData11shared_nullE'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayE13detach_helperEv[QList<QByteArray>::detach_helper()]+0x4c):qsql_odbc.cpp: undefined reference to `_imp___ZN9QListData7detach2Ev'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayE6appendERKS0_[QList<QByteArray>::append(QByteArray const&)]+0x6e):qsql_odbc.cpp: undefined reference to `_imp___ZN9QListData6appendEv'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayE6appendERKS0_[QList<QByteArray>::append(QByteArray const&)]+0x110):qsql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\qsql_odbc.o(.text$_ZN5QList I10QByteArrayE6appendERKS0_[QList<QByteArray>::append(QByteArray const&)]+0x11e):qsql_odbc.cpp: undefined reference to `_imp___Z5qFreePv'
tmp\obj\release_shared\moc_qsql_odbc.o(.text+0x82) :moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::qt_metacall(QMetaObject::Call, int, void**)'
tmp\obj\release_shared\moc_qsql_odbc.o(.text+0x92) :moc_qsql_odbc.cpp: undefined reference to `_imp___ZN10QSqlDriver16staticMetaObjectE'
tmp\obj\release_shared\moc_qsql_odbc.o(.text+0x5a) :moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::qt_metacast(char const*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x1c):moc_qsql_odbc.cpp: undefined reference to `QObject::event(QEvent*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x20):moc_qsql_odbc.cpp: undefined reference to `QObject::eventFilter(QObject*, QEvent*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x24):moc_qsql_odbc.cpp: undefined reference to `QObject::timerEvent(QTimerEvent*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x28):moc_qsql_odbc.cpp: undefined reference to `QObject::childEvent(QChildEvent*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x2c):moc_qsql_odbc.cpp: undefined reference to `QObject::customEvent(QEvent*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x30):moc_qsql_odbc.cpp: undefined reference to `QObject::connectNotify(char const*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x34):moc_qsql_odbc.cpp: undefined reference to `QObject::disconnectNotify(char const*)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x38):moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::isOpen() const'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x5c):moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::sqlStatement(QSqlDriver::StatementTyp e, QString const&, QSqlRecord const&, bool) const'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x74):moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::setOpen(bool)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x78):moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::setOpenError(bool)'
tmp\obj\release_shared\moc_qsql_odbc.o(.rdata$_ZTV 11QODBCDriver[vtable for QODBCDriver]+0x7c):moc_qsql_odbc.cpp: undefined reference to `QSqlDriver::setLastError(QSqlError const&)'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlodbc4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.1/src/plugins/sqldrivers/odbc'
mingw32-make: *** [release] Error 2

C:\Qt\4.3.1\src\plugins\sqldrivers\odbc>

wysota
9th October 2007, 14:41
My guess is that you don't have ODBC installed on your system. Please do that before trying to compile Qt ODBC driver.