gpt4 book ai didi

c++ - 如何在 QT[C++] 中从 linux 机器连接 SQL Server 2008 R2?

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:35 24 4
gpt4 key购买 nike

我正在尝试从我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com