2017-01-09 117 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/)沒有指定它 –

相關問題