我的问题与此类似: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/