1

我的问题与此类似:link,除了我不想序列化 QList。我想将 QList 作为双精度数组存储在 DB 表中。

我正在为变量尝试以下 bindValue 命令val

query.bindValue( QStrFromSrcEnc( id ), QVariant::fromValue( val ) );

val QList在哪里,id":value"

我正在执行以下 postgres 查询:

"INSERT INTO valtable( type_id, asset_id, value, tag )\n"
            "VALUES ( :typeId, :assetId, :value, :tag )\n"

表的value列是双精度[] 类型。

我收到以下错误,因为您可以看到第三个字段为value空白,这意味着 val未正确绑定。

ERROR: syntax error at or near ","
LINE 1: EXECUTE qpsqlpstmt_13e (60, 63, , '')
                                        ^

但是,如果 val 只是一个 QVariant,那么它可以正常工作。

4

1 回答 1

3

好的,我做了一个解决方法。我将 QList 列表转换为 postgres 数组格式的 QString(例如'{1.32,4.43}')。

QString valueStr = QStrFromSrcEnc("{");

for(int i=0; i<List.size(); ++i)
{

    valueStr += QString::number( List[i] );
    valueStr += QStrFromSrcEnc(",");
}

valueStr.chop(1);
valueStr += QStrFromSrcEnc("}");

然后我将字符串值绑定到:val占位符

于 2013-06-18T10:49:05.880 回答