我正在尝试从我的 Linux 机器连接 Windows 机器上的 SQL Server R2。我无法连接 SQL Server。
我连接数据库的代码对我不起作用:
#include <QtCore/QCoreApplication>
#include<QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3");
db.setDatabaseName("DRIVER={SQL Server};Server=192.162.1.108;Database=WIN-UK71JUGMM8T;Uid=sa;Port=1433;Pwd=sa@123;WSID=.");
db.open();
if(!db.open())
{
qDebug()<<"ERRORR MESSAGE: =>" << db.lastError().text();
return 0;
}
return a.exec();
}
它给我以下错误:
ERRORR MESSAGE: => "[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
我的 .pro 文件:
QT += core sql
QT -= gui
TARGET = SQLTest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
如果想在WINDOWS 机器上做一些程序,请告诉我。
最佳答案
您的代码大部分看起来都不错。它与我自己的 SQL Server 客户端应用程序相同。但是可能会有一些错误:
编辑:您混淆了 IP 和数据库名称。您的主机是“WIN-UK71JUGMM8T”作为您的 screenshot给我看了。 “数据库”字段对应于您要在“数据库”子文件夹中打开的数据库。
主持人:
WIN-UK71JUGMM8T\SQLEXPRESS
连接字符串
db.setDatabaseName("DRIVER={SQL Server};Server=WIN-UK71JUGMM8T\SQLEXPRESS;Database='Your DB Name';Uid=sa;Port=1433;Pwd=sa@123;WSID=.");
对于驱动程序,您应该使用QODBC
而不是QODBC3
。 Qt 应该选择正确的版本,您不必指定版本号。
其他错误是你的db.open()
,你只需要在if
语句中
db.open(); //Remove this line, as you call it in your if statement
if(!db.open())
{
qDebug()<<"ERRORR MESSAGE: =>" << db.lastError().text();
return 0;
}
一个好的做法是使用以下命令列出可用的驱动程序:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
qDebug() << db.drivers();
关于c++ - 如何在 QT[C++] 中从 linux 机器连接 SQL Server 2008 R2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41549602/