【发布时间】:2018-03-25 03:08:11
【问题描述】:
我搜索了 SO 和 Google,但在这个问题上没有找到太多帮助。这似乎是由于 ODBC 函数被乱序调用。但是由于我使用的是包装了 ODBC 的 QSql,所以我很难找到这个函数。请帮忙...
- 我能够连接到 sql server 数据库
- 我测试了一个非常简单的查询,但仍然出现错误。我不认为这是由于列绑定。
-
我可以用sql server运行查询,所以我认为sql查询没问题。
- 我正在使用的工具:
VS c++ 2017、CMake、Qt 5.09.2、sql server 2017
-
以下是错误信息:
QODBCResult::exec: 无法执行语句:“[Microsoft][ODBC Driver Manager] Function sequence error” QSqlError("0", "QODBC3: 无法执行语句", "[Microsoft][ODBC Driver Manager] 函数序列错误")
测试编码:
此编码生成上面的错误消息。
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;
}
【问题讨论】:
-
在创建QSqlQuery之前尝试
QCoreApplication::processEvents()QTBUG-54880 -
@MohammadKanan 我添加了“QCoreApplication::processEvents();”在 QSqlQuery 之前。我还尝试按照错误报告的建议使用 query.exec(...) ,但仍然出现相同的错误。请帮忙...
标签: c++ sql-server qt odbc