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

标签 c++ linux windows qt sql-server-2008

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

相关文章:

c++ - 跨源文件模板实例化及使用

c++ - 退出 openmp 代码时出现段错误

java - 运行驻留在服务器上的 Java 程序

linux - Redhat virsh 控制台 vmname 挂起(无网络连接)

c# - 如何显示两个表的信息?使用内连接

c++ - enable_shared_from_this : Sharing the use count in member

c++ - "void SomeFunction(int, void*)"是什么意思?

linux - 如何编写Play Framework service shell让它在启动时开始运行

windows - 帮助运行 Windows 命令的 Java 库/API

c++ - 从 Python 调用定制的 C++ dll