我的问题类似于这个:link,除了我不想序列化QList。我想在数据库表中将QList存储为双精度数组。
我正在为变量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
的第3个字段为空,这意味着val
未正确绑定。
ERROR: syntax error at or near ","
LINE 1: EXECUTE qpsqlpstmt_13e (60, 63, , '')
^
但是,如果val只是一个QVariant,那么它可以正常工作。
答案 0 :(得分: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
占位符