Я пытаюсь подключиться к базе данных 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 или аналогичным?
Это то, что я делаю, и это прекрасно работает для меня:
Примечание: 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;
}
Других решений пока нет …