QSqlQuery вызывает ошибку последовательности функций ODBC

Я искал SO и Google, но не нашел большой помощи по этому вопросу. Кажется, из-за того, что функции ODBC вызываются не по порядку. Но так как я использую QSql, который оборачивает ODBC, мне трудно отследить функцию. Пожалуйста помоги…

  • Мне удалось подключиться к базе данных сервера SQL
  • Я проверил очень простой запрос и все еще получил ошибку. Я не думаю, что это связано с привязкой столбцов.
  • Я был в состоянии выполнить запрос с 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. Тестовое кодирование:

Эта кодировка генерирует сообщение об ошибке выше.

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

Решение

Я нашел это обсуждение на QtCenter, которое может помочь вам, даже если я сомневаюсь, почему он решил проблему
Вы пытаетесь использовать конструктор QSqlQuery, который не выполняется как упоминалось

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]