Procedura z parametrym typu OUT i kłopot z bindValue dla QSqlQuery

0

Witam,
jeśli temat wątku nie za wiele Wam mówi, to chodzi o problem z poprawnym "obsłużeniem" w Qt procedury, która zwraca parametr typu OUT..
W moim przypadku chciałbym zwrócić wartość typu string (w zasadzie QString) i wzorując się na poniższym przykładzie nie mogę sobie z tym poradzić (czytaj. nie działa mi to :( )

Przykład z forum: ( qt-project.org/doc/qt-5.1/qtsql/sql-driver.html )

    QSqlQuery query(db_tmp);
    int result = 1;

    query.prepare("call proc_userByAdd(?,?,?,?)");
    query.bindValue(0,username);
    query.bindValue(1,password);
    query.bindValue(2,roleid);
    query.bindValue(3,0,QSql::Out);

    if(!query.exec())
    {
        WRTLOG(tr("[DBERROR][USERMANAGE][addUser]%1\r\n[sql]%2").arg(query.lastError().text(),query.lastQuery()),DEBUG);
        result = 0;
    }
    else
    {
        result = query.boundValue(3).toInt();
    }

Szukając dalej natrafiłem również na inny przykład z dokumentacji ( http://qt-project.org/doc/qt-5.1/qtsql/sql-driver.html ) i korzystając z tego powiedzmy, że to działa.. ale wolałbym raczej zrobić to przy pomocy bindValue (bo m.in. o ile dobrze wiem, chroni to m.in. przed sql injection..)

QSqlQuery q;
q.exec("call qtestproc (@outval1, @outval2)");
q.exec("select @outval1, @outval2");
q.next();
qDebug() << q.value(0) << q.value(1); // outputs "42" and "43"

Macie jakieś pomysły ? Może jakiś działający u Was przykład?

0

@kq - exec daje true, ale wynik to pusty string (w qDebug'u wygląda to tak: "").

1 użytkowników online, w tym zalogowanych: 0, gości: 1