I'm trying to connect to a MS SQL Server on a remote box using QODBC in my Qt Linux application.
Here's what I have done so far:
Added QT += SQL in the .pro file.
Tested some db functions:
QStringList drivers = QSqlDatabase::drivers(); qDebug() << "Drivers: " ; foreach(QString driver, drivers) { qDebug() << ":: " << driver; } qDebug() << "Connection Names: "; QStringList connames = QSqlDatabase::connectionNames(); foreach(QString conname, connames) { qDebug() << ":: " << conname; } qDebug() << "---";
these both work, though connectionNames() is empty at this stage.
I have tried to added a database:
QString serverName = "server1"; QString dbName = "abc123"; QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "MyFirst"); db.setHostName(serverName); QString myCon = QString("DRIVER={SQL Native Client};SERVER=%1;DATABASE=%2;Trusted_Connection = Yes").arg(serverName).arg(dbName); db.setDatabaseName(myCon);
If I now list the connections, "MyFirst" is in the list.
Tried to open the database:
bool ok = db.open(); qDebug() << "OK: " << ok; if (!ok) { qDebug() << "error: " << db.lastError().text(); }
The db.open() fails with the following message:
"[unixODBC][Driver Manager]Can't open lib 'SQL Native Client' : file not found QODBC3: Unable to connect"
My questions are:
I picked up the connection string from a forum post, I figured it was as good a place to start as any, but what exactly should be in there? Where does "SQL NAtive Client" come from? What do I need to do to setup my Qt / Linux box to be able to connect to a remote MS SQL Server?