2017-01-09 18 views
0

Windowsマシン上のLinuxマシンからSQL Server R2に接続しようとしています。 SQL Serverに接続できません。SQL Server 2008 R2をLinuxマシンからQT [C++]に接続する方法は?

私のために動作していないデータベースに接続するための私のコードは:

#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とデータベース名が混在しています。あなたのホストはあなたのscreenshotが私に見せた通り "WIN-UK71JUGMM8T"です。 「データベース」フィールドは、「データベース」サブフォルダで開くデータベースに対応します。

ホスト:ドライバの場合

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()で、あなただけの良い練習を使って、利用可能なドライバの一覧を表示することもある

db.open(); //Remove this line, as you call it in your if statement 
if(!db.open()) 
{ 
    qDebug()<<"ERRORR MESSAGE: =>" << db.lastError().text(); 
    return 0; 
} 

if文でそれを必要とする:ヨーヨー先生ありがとうござい

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 
qDebug() << db.drivers(); 
+0

、ご確認ください。私の変更 –

+0

変更を加えた後、以下のようなエラーが表示されます。 'DRIVERS =>(" QIBASE "、" QSQLITE "、" QSQLite3 "、" QMYSQL3 "、" QMYSQL "、" QODBC3 "、" QODBC "、" QPSQL7 "、" QPSQL "、" QTDS7 "、" QTDS ")"[unixODBC] [ドライバマネージャ]データソース名が見つからず、デフォルトドライバが指定されていませんQODBC3:接続できません" Linuxマシンにドライバをインストールする必要はありますか?それらの接続や設定の変更は? Beauce私はJavaで接続できますが、QT C++では接続できません –

+0

"driver"によって、Qtは自分自身のdll(Qtインストールフォルダにあります)、sqldriversフォルダ、またはLinux上で実行している場合はlibsを意味します。これらはQt特有のもので、別途インストールする必要はありません。 [documentation](https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/)にそれが指定されていないので、ポートを削除してみてください –

関連する問題