我正在尝试在 Linux 上使用 Qt 连接到 Azure SQL Server 数据库,但无法成功。我尝试了这样的:Connection to SQL Server with 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;
}
关于c++ - 在 Linux 上使用 Qt 连接到 Azure SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40512966/