c++ - 如何通过ODBC从系统间缓存数据库获取数据?

标签 c++ qt intersystems-cache

这就是我尝试从数据库获取数据的方式:

#include <QCoreApplication>
#include <QtCore>
#include <QtSql>
#include "iostream"

int main(int argc, char *argv[])
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("DRIVER={InterSystems ODBC};SERVER=localhost;PORT=1972;DATABASE=USER;UID=_system;PWD=SYS; Unicode SQLTypes=1;");

    if (!db.open())
    {
        std::cout << "Error opening database" << std::endl;
        return -1;
    }
    else
    {
        QSqlQuery query;
        if(query.exec("SELECT * FROM ACCOUNTS")){
            std::cout << "Select succses!" << std::endl;
        }

        while (query.next())
        {
            std::cout << "Getting results..." << std::endl;
            std::cout << query.value(0).toString().toStdString() << std::endl;
        }

        std::cout << "EXIT!" << std::endl;
        return 0;
    }
}

在 query.exec(...) 之后,query.next() 始终为 false,但我确实知道表中有数据。当我尝试从缓存数据库的示例表中获取数据时,会重现此行为。我做错了什么?

感谢您的帮助。

最佳答案

问题是连接配置错误:

 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
 db.setDatabaseName("DRIVER={InterSystems ODBC};SERVER=localhost;PORT=1972;DATABASE=USER;UID=_system;PWD=SYS; Unicode SQLTypes=1;");

应该是:

 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3");
 db.setDatabaseName("DRIVER={InterSystems ODBC35};SERVER=localhost;PORT=1972;DATABASE=USER;UID=_system;PWD=SYS; Unicode SQLTypes=1;");

关于c++ - 如何通过ODBC从系统间缓存数据库获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24081219/

相关文章:

c++ - 改变存储在 QVector 中的结构的状态

c++ - 防止 Qt 窗口在 Hook 的应用程序中关闭,Eventfilter 不执行任何操作

intersystems-cache - 如何使用 Intersystems Caché 将全局值保存到文本文件中?

sql - 比较 Caché 中的空值

c++ - 限制类模板类型

c++ - 为什么这需要 Boost lib 文件?

c++ - 如何从类型(类)转换为标准 :string?

c++ - QDomDocument - 如何从 QString 创建?

intersystems-cache - 当前在命名空间中枚举全局变量的首选方法是什么?

c++ - 新构建的 Ubuntu 可执行文件失败,出现 "Invalid argument"(退出代码 126)