2017-01-09 99 views
0

我想从我的Linux机器连接Windows机器上的SQL Server R2。我无法连接SQL Server。如何从QT [C++]中的Linux机器连接SQL Server 2008 R2?

我用来连接数据库的代码是不是为我工作:

#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;[email protected];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机器上做一些程序。

回答

0

你的代码大部分看起来很好。这与我自己的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;[email protected];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(); 
+0

感谢哟,先生,请检查我的更改 –

+0

完成更改后出现如下错误: DRIVERS =>(“QIBASE”,“QSQLITE”,“QSQLITE3”,“QMYSQL3”,“QMYSQL”,“QODBC3”,“QODBC”,“QPSQL7 “,”QPSQL“,”QTDS7“,”QTDS“) ERRORR MESSAGE =>“[unixODBC] [驱动程序管理器]未找到数据源名称,未指定默认驱动程序QODBC3:无法连接”' 是否需要在我的Linux机器上安装某些驱动程序?用于连接它们或进行任何配置更改? Beauce我可以用JAVA连接,但不能用QT C++ –

+0

通过“驱动程序”,Qt表示他自己的dll(可在Qt安装文件夹中找到),sqldrivers文件夹中,或者如果您在Linux上运行,则为libs。它们特定于Qt,不需要单独安装。尝试通过删除端口,因为[文档](https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/)没有指定它 –

相关问题