Подключение к Azure SQL Server с Qt в Linux

Я пытаюсь подключиться к базе данных Azure SQL Server с Qt в Linux, но у меня не получилось. Я попробовал что-то вроде этого: Подключение к SQL Server с помощью qt но соединение никогда не открывается.

Мой код очень прост:

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("user@my-database");
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 или аналогичным?

1

Решение

Это то, что я делаю, и это прекрасно работает для меня:
Примечание: connName — это имя соединения, по которому я открываю базу данных.

QString connectionString = "Driver={ODBC Driver 13 for SQL Server};""Server=tcp:xxx.database.windows.net,1433;""Database=ABC;""Uid=aaa@xxx;""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;
}
1

Другие решения

Других решений пока нет …