【问题标题】:Store QList<QVariant> to PostgreSQL database in Qt将 QList<QVariant> 存储到 Qt 中的 PostgreSQL 数据库
【发布时间】:2013-06-17 16:07:56
【问题描述】:

我的问题与此类似: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 列的类型是双精度[]。

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

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

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

【问题讨论】:

    标签: qt postgresql


    【解决方案1】:

    好的,我做了一个解决方法。 我将 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 占位符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      相关资源
      最近更新 更多