qt - 将 QList<QVariant> 存储到 Qt 中的 PostgreSQL 数据库

标签 qt postgresql

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

相关文章:

sql - postgresql中IPV6十进制转十六进制段函数

c++ - 错误 : no operand "<<" matches these operands when try to use Qstring with OStream object

c++ - 我无法在 QT 中编译我的项目

c++ - 添加新的 DockWidget 后自动将 DockWidget 的大小调整为相同的高度

python - 如何在Python QT中的QTabWidget中查找单击的选项卡的索引?

Ruby/PG - 无法连接到 PostgreSQL

sql - 在 PostgreSQL 中用另一个表的列更新一个表的列

用于 Postgres 的 php pdo : "could not find driver"

c++ - Qtopengl,为什么不能使用不同的 vbo 绘制两个立方体

postgresql - 用多字符字符串替换字符