我的问题与此类似:link只是我不想序列化QList。我想将QList存储为DB表中的双精度数组。
我正在为变量val尝试以下bindValue命令:

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列是double precision[]类型。
我得到以下错误,因为您可以看到value的第三个字段为空,这意味着val没有正确绑定。
ERROR: syntax error at or near ","
LINE 1: EXECUTE qpsqlpstmt_13e (60, 63, , '')
                                        ^

然而,如果val只是一个QVariant,那么它工作得很好。

最佳答案

好吧,我做了个变通。
我将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占位符

关于qt - 将QList <QVariant>存储到Qt中的PostgreSQL数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17152047/

10-12 21:33