QSqlQuery导致ODBC函数序列错误

时间:2018-03-25 03:08:11

标签: c++ sql-server qt odbc

我搜索了SO和Google,但在这个问题上没有找到太多帮助。似乎由于ODBC函数被无序调用。但由于我使用的是包装ODBC的QSql,因此我很难跟踪该功能。请帮忙......

  • 我能够连接到sql server数据库
  • 我测试了一个非常简单的查询但仍然出错。我不认为这是由于列绑定。
  • 我能用sql server运行查询,所以我认为sql查询没问题。

    1. 我使用的工具:

VS c ++ 2017,CMake,Qt 5.09.2,sql server 2017

  1. 以下是错误消息:

    QODBCResult :: exec:无法执行语句:“[Microsoft] [ODBC驱动程序管理器]函数序列错误” QSqlError(“0”,“QODBC3:无法执行语句”,“[Microsoft] [ODBC驱动程序管理器]函数序列错误”)

  2. 测试编码:

  3. 此编码生成上面的错误消息。

    int main()
    {
        QSqlDatabase GUIInpDB = QSqlDatabase::addDatabase("QODBC", "MainSQLDB");
        GUIInpDB.setConnectOptions();
        QString inpSqlServer = "DESKTOP-085AEA8\\SQLEXPRESS";
        QString dbName = "test";
        QString connString = QString("Driver={ODBC Driver 13 for SQL Server};Server=%1;DATABASE=%2;Trusted_Connection=Yes;")
            .arg(inpSqlServer).arg(dbName); //the argument replace the %1 and %2
        GUIInpDB.setDatabaseName(connString);
        QSqlDatabase db = QSqlDatabase::database("MainSQLDB");
    
        if (!db.open())
        {
            qDebug() << "Connection for db not working";
            return 1;
        }
        QSqlQuery query("SELECT * FROM TBL.tbl_test", db);  
        if (!query.exec())
            qDebug() << query.lastError();
    
        int num_of_rows = query.size();
    
        getchar();
        return 0;
    }
    

1 个答案:

答案 0 :(得分:1)

我发现这个关于QtCenter的讨论可能会对你有所帮助,即使我怀疑它为何解决了这个问题 您迁移尝试使用不提及

的exec的QSqlQuery构造函数

http://www.qtcentre.org/threads/18832-ODBC-function-sequence-error