QSqlQuery prepare exec не возвращает записи



  • База данных MySQL. Есть хранимая процедура get_component_param, возвращающая одну запись. Процедура с параметрами.

    Если передавать вызов в конструктор QSQLQuery статичной строкой, то запрос отрабатывает нормально.

    Если же использую запрос с параметрами, то возникает проблема.

    Вызываю последовательно
    q.prepare('call get_component_param(:component_cd, :parameter_cd)');
    q.bindValue(':component_cd','ZZZ');
    q.bindValue(':parameter_cd','YYY');
    q.exec();

    prepare возвращает true. По логу MySQL вижу, что при вызове exec в СУБД передан правильный запрос
    call get_component_param('XXX', 'ZZZ') и при проверке в MySQL Workbench этот запрос возвращает требуемую запись.

    Но q.first(), q.next() возвращают false и все остальные признаки говорят, что запись из q я получить не могу.

    В чем может быть проблема?



  • смотри что в пришло, handle он наверное распарсить запрос не может, вот пример:
    @QSqlQuery query = ...
    QVariant v = query.result()->handle();
    if (v.isValid() && qstrcmp(v.typeName(), "sqlite3_stmt*")) {
    // v.data() returns a pointer to the handle
    sqlite3_stmt *handle = *static_cast<sqlite3_stmt **>(v.data());
    if (handle != 0) { // check that it is not NULL
    ...
    }
    }@
    если handle не валидный то ошибка смотри lastError, сравнивай запрос с lastQuery (хотя это врятли) . Но если так то значения lastError, lastQuery, handle(тока если валидный), QSqlResult::boundValues() пиши сюда. А также проверь что для данный тип ответа зареган в метатипах и имеет там операторы для потока


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.