Simpan QList‹QVariant› ke database PostgreSQL di Qt

Pertanyaan saya mirip dengan ini: link kecuali saya tidak ingin membuat serial Daftar Q. Saya ingin menyimpan QList sebagai array presisi ganda di tabel DB.

Saya mencoba perintah bindValue berikut untuk variabel val:

query.bindValue( QStrFromSrcEnc( id ), QVariant::fromValue( val ) );

dimana val adalah QList dan id adalah ":value"

Saya menjalankan kueri postgres berikut:

"INSERT INTO valtable( type_id, asset_id, value, tag )\n"
            "VALUES ( :typeId, :assetId, :value, :tag )\n"

Kolom value pada tabel bertipe presisi ganda[].

Saya mendapatkan kesalahan berikut, seperti yang Anda lihat bidang ke-3 untuk value kosong yang berarti val tidak terikat dengan benar.

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

namun, jika val hanyalah sebuah QVariant, maka ia berfungsi dengan baik.


person Lyman Zerga    schedule 17.06.2013    source sumber


Jawaban (1)


Oke, saya sudah melakukan solusinya. Saya mengonversi Daftar QList menjadi QString dalam format array postgres (mis.'{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("}");

lalu saya ikat nilai string ke placeholder :val

person Lyman Zerga    schedule 18.06.2013