Как определить размер резерва QString для значения привязки PL / SQL - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь загрузить CLOB из запроса в Oracle PL / SQL в значение, связанное со строкой.

Код, который делает это:

QString testStr ="*****";
// testStr.truncate(0);
testStr.reserve( 1000000 );
qDebug() << testStr.capacity();
query.bindValue(":result_clob", testStr, QSql::Out);
bool query_executed_ok = query.exec();
qDebug() << "did it execute?" << query_executed_ok;
if (query_executed_ok) {
    testStr = query.boundValue(":result_clob").toString();
    qDebug() << testStr;
} else {
    qDebug() << "string is empty";
}

Первоначально у меня была проблема с небольшим размером строкового буфера, замечено здесь

Но позже обнаружил, что если я увеличил строковый буфер в QString до некоторого (произвольного?) Значения, это, кажется, работает. Я предполагаю, что этот размер буфера в байтах.

Как определить, какой размер создать в этом буфере, чтобы мои возвращаемые значения не исчерпали память с ошибкой "numeric or value error: character string buffer too small"

...