2016-11-09 11 views
1

Linux上でQtを使用してAzure SQL Serverデータベースに接続しようとしていますが、それを実現できませんでした。私はこのようなものを試しました:Connection to SQL Server with qtしかし、接続は決して開かれません。Linux上でQtを使用してAzure SQL Serverに接続する

私のコードはとてもシンプルです:

QString connectionTemplate = "DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;"; 

QString connectionString = connectionTemplate.arg("tcp:my-database.database.windows.net,1433").arg("my-database"); 
for(int i = 0; i < QSqlDatabase::drivers().size(); i++) { 
    qDebug() << QSqlDatabase::drivers().at(i); 
} 

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 

db.setDatabaseName(connectionString); 
db.setUserName("[email protected]"); 
db.setPassword("My password"); 
//db.setConnectOptions("Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"); 
bool ok = false; 
try { 
    ok = db.open(); 
} catch(QException ex) { 
    qDebug() << ex.what(); 
} 

qDebug("%s=%d", "conexión abierta", ok); 

QSqlQueryModel *model = new QSqlQueryModel; 

QString query = "SELECT 1 AS test_col"; 
model->setQuery(query, db); 

db.close(); 

私はすでにQODBとQODBC3ドライバを持って、私は接続を行うことができませんなぜ私にはわかりません。

ドライバ、Qt、Azureなどに関連するものがありますか?

+0

あなたは何かを見つけましたか? –

+0

いいえ、まだ:( –

答えて

0

これは私がやっていることであり、それは私にとって完璧に機能します。
注:connNameはデータベースを開くときの接続名です。

QString connectionString = "Driver={ODBC Driver 13 for SQL Server};" 
          "Server=tcp:xxx.database.windows.net,1433;" 
          "Database=ABC;" 
          "[email protected];" 
          "Pwd=***;" 
          "Encrypt=yes;" 
          "TrustServerCertificate=no;" 
          "Connection Timeout=30;"; 

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", connName); 
db.setDatabaseName(connectionString); 

if (db.open()) 
{ 
    return true; 
} 
else 
{ 
    QString error = db.lastError().text(); 
    return false; 
} 
関連する問題