c++ - 在 Linux 上使用 Qt 连接到 Azure SQL Server

标签 c++ sql-server linux qt azure

我正在尝试在 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/

相关文章:

c++ - 无法创建模拟类/对象来替换类中私有(private)成员对象的功能,以便在 gtest 中进行单元测试

c++ - 使用 tcp::acceptor::async_accept 的套接字指针所有权转移

c++ - 在 OpenCV 中读取嵌套的 XML

c# - 不返回任何行的 SELECT sql 语句的 ExecuteNonQuery

c# - 将 SQLServer 的 DateTime 转换为 MySQL

python - 我正在尝试通过 Pip 安装 zipline 模块,但出现异常

linux - bash 中的备份脚本

c++ - Boosts 说 boost::log 不支持 fork 进程。如果记录器直到 fork 之后才初始化,情况仍然如此吗?

sql-server - 需要帮助 Local.name(.) xquery 函数

linux - 我如何附加到正在运行的进程,如 Linux 上的调试器?