我的问题与此类似:link除了我不想序列化 QList。我想将 QList 作为 double 组存储在数据库表中。
我正在为变量 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 [] 类型。
我收到以下错误,如您所见,value
的第三个字段为空,这意味着 val
未正确绑定(bind)。
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("}");
然后我将字符串值绑定(bind)到 :val
占位符
关于qt - 将 QList<QVariant> 存储到 Qt 中的 PostgreSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152047/