我搜索了SO和Google,但在这个问题上没有找到太多帮助。似乎由于ODBC函数被无序调用。但由于我使用的是包装ODBC的QSql,因此我很难跟踪该功能。请帮忙......
我能用sql server运行查询,所以我认为sql查询没问题。
VS c ++ 2017,CMake,Qt 5.09.2,sql server 2017
以下是错误消息:
QODBCResult :: exec:无法执行语句:“[Microsoft] [ODBC驱动程序管理器]函数序列错误” QSqlError(“0”,“QODBC3:无法执行语句”,“[Microsoft] [ODBC驱动程序管理器]函数序列错误”)
测试编码:
此编码生成上面的错误消息。
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;
}
答案 0 :(得分:1)
我发现这个关于QtCenter的讨论可能会对你有所帮助,即使我怀疑它为何解决了这个问题 您迁移尝试使用不提及
的exec的QSqlQuery构造函数http://www.qtcentre.org/threads/18832-ODBC-function-sequence-error