isSelect QSqlQuery не работает должным образом

У меня есть следующий код:

QString req = QString( "dbo.create_bsk @sico = " ) + QString(current_sico.c_str()) + ", @dev_cod='" + local_ccy.c_str() +"'";
QSqlQuery query = db.exec(req);
std::cout << req.toStdString() << std::endl;

std::cout << query.isActive() << std::endl
<< query.isSelect() << std::endl;
if(query.next())
{
current_bk = query.record().value("bk_cod").toString().toStdString();

if(current_bk.compare("") != 0)
{
std::cout << current_sico << " ==> " << current_bk << std::endl;
}
}
else
{
std::cout << "no next" << std::endl;
}

и я получил что-то вроде этого при исполнении:

dbo.create_bsk @sico = 1300610792, @dev_cod='EUR'
1
0
no next

И я продолжать получать «нет дальше», независимо от того, сколько раз я его выполняю.
Затем я копирую и вставляю

dbo.create_bsk @sico = 1300610792, @dev_cod='EUR'

в мой любимый редактор SQL и выполнить его. Возвращает одну ячейку (одну строку / один столбец), столбец с именем «bk_cod» и значением «bk38»

Затем я снова запускаю программу и получаю:

dbo.create_bsk @sico = 1300610792, @dev_cod='EUR'
1
1
1300610792 ==> bk38

И оттуда я продолжайте получать «1300610792 ==> bk38» независимо от того, сколько раз я его выполняю.

Некоторый контекст

запрос create_bsk не является повторно входящим, он выполняет обновления, так что результат ‘bk38’, который является идентификатором, либо:

  1. созданный
  2. извлекаться
  3. » (пустая строка) — это значение ячейки, указывающее, что корзина будет игнорироваться и идентификатор не будет создан

Но Всегда возвращает ячейку. Так согласно Вот QSqlQuery :: next () должно быть «true».

И, как показано выше, независимо от того, сколько раз я выполняю свою программу, она всегда возвращает «нет следующего», пока она не была выполнена в редакторе SQL, а затем, как только я выполню ее в своем редакторе, независимо от того, сколько раз я выполняю свою программу, она всегда возвращает тот же ‘bk_cod’, что и ID.

Что мне не хватает? Проблема возникает в большинстве случаев, но не всегда, и я не смог выяснить какой-либо шаблон.

0

Решение

https://bugreports.qt-project.org/browse/QTBUG-34225#comment-218380

Это проблема с драйвером, который я использую для TDS.

0

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

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

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