【发布时间】:2015-09-24 10:27:42
【问题描述】:
我正在尝试在我的 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][Driver Manager]无法打开 lib 'SQL Native Client':找不到文件 QODBC3:无法连接”
我的问题是:
我从一个论坛帖子中找到了连接字符串,我认为这是一个很好的起点,但那里到底应该是什么? “SQL Native Client”从何而来?我需要做些什么来设置我的 Qt / Linux 机器才能连接到远程 MS SQL Server?
【问题讨论】:
-
从 Qt 安装的源目录编译 qodbc 并查看此页面以获取连接字符串:wiki.qt.io/ODBC
标签: c++ sql-server linux qt