我正在尝试在我的 Qt Linux 应用程序中使用 QODBC 连接到远程机器上的 MS SQL Server。
这是我到目前为止所做的:
在 .pro 文件中添加了 QT += SQL。
测试了一些数据库功能:
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() << "---";
虽然 connectionNames()
在这个阶段是空的,但它们都有效。
我尝试添加一个数据库:
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);
如果我现在列出连接,“MyFirst”在列表中。
尝试打开数据库:
bool ok = db.open(); qDebug() << "OK: " << ok; if (!ok) { qDebug() << "error: " << db.lastError().text(); }
db.open() 失败并显示以下消息:
[unixODBC][驱动程序管理器]无法打开库“SQL Native Client”:找不到文件 QODBC3:无法连接“
我的问题是:
我从论坛帖子中获取了连接字符串,我认为它是一个很好的起点,但那里到底应该包含什么? “SQL Native Client”从何而来?我需要做什么来设置我的 Qt/Linux 机器才能连接到远程 MS SQL Server?
最佳答案
听起来您需要安装 SQL Server ODBC 驱动程序。
关于如何做到这一点的解释在这里:
此外,您需要使用正确的名称来引用它,即“ODBC Driver 11 for SQL Server”
关于c++ - 从 Qt Linux 应用程序连接到 MS SQLServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32759022/