リモートWindowsサーバー上にMicrosoft SQL 2014データベースがあります。私はこのデータベースに接続するQT GUIアプリケーションを開発しようとしています。このアプリはLinux/C++環境にあります。 QtSql APIを使用してそのデータベースに接続しようとしました。私はそれが私はいくつかの記事を読んで、私は必要なことがわかっwork.Thenていなかった私のQt project.StillへのSQLドライバのパスを輸出しようとしたlinuxのC++アプリケーションからSQLサーバーにアクセスする方法は?
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
QSqlError("", "Driver not loaded", "Driver not loaded")
:として
bool MainWindow::connect()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");//I am not sure if I am calling this correctly
db.setHostName("III");
db.setDatabaseName("YYY");
db.setUserName("YYY");
db.setPassword("XX");
bool ok = db.open();
if(ok==true)
{
QSqlQuery query;
query.exec("SELECT * FROM Subjects");
while (query.next())
{
int phy = query.value(0).toInt();
int chem = query.value(1).toInt();
ui->lineEdit_2->setText(QString::number(phy));
ui->lineEdit_3->setText(QString::number(chem));
}
}
else
{
qDebug()<<db.lastError();
}
return ok;
}
私にエラーを与えて
その私のLinuxマシン上のmssql-toolsとODBCドライバ。
https://blogs.msdn.microsoft.com/sqlnativeclient/2016/10/20/odbc-driver-13-0-for-linux-released/
と、これは私のLinuxボックス(14.04 Ubuntuの)だけ15.10 & 16.04上では動作しないことが見つかりました:私はこのウェブサイトに基づいてこれをインストールしてみました。
The following packages have unmet dependencies:
mssql-tools :
Depends: libc6 (>= 2.21) but 2.19-0ubuntu6.9 is to be installed
Depends: libstdc++6 (>= 5.2) but 4.8.4-2ubuntu1~14.04.3 is to be installed
Depends: msodbcsql (>= 13.1.0.0) but it is not going to be installed
Depends: msodbcsql (< 13.2.0.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
は、それから私は、ここからドッキングウィンドウを使用: https://hub.docker.com/r/taylorbarrick/mssql-server-linux-tools/
を、私は正常にインストールすることができますが、私は
$docker run -t taylorbarrick/mssql-server-linux-tools sqlcmd -d <dbname> -H <host> -U <username> -P <password>
を実行しているとき、私は再びエラーを取得しています。
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Error code 0x2749.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
ただし、ビジュアルインターフェイスを使用している場合は、SQLデータベースに接続できます。お手伝いください。
ドライバをビルドするには、 '$ QTDIR/5.6/gcc_64/plugins/sqldrivers /'と 'unixodbc-dev'パッケージのどこかに保存されているQODBCドライバ(' .so'ファイル)もインストールされていることを確認してください! –
解決策を提供してくれてありがとう、ありがとうございました。しかし、私はForeign Data Wrapperの概念を使用してそれを解決しました。それによって、私のpostgresデータベースがSQLデータベースの "ビュー"にアクセスできるようになりました。私はpostgresのクライアント側には何もインストールする必要はありませんでしたが、サーバ側にしかインストールしませんでした。このため、私のQTアプリは今変更する必要はありません。私のアプリケーションでは、そのポストのdb.Thisへの定期的な呼び出しは完全に働いた。しかし、私はあなたの答えを受け入れています。 – Minion