我正在尝试将二进制数据(QImage
)插入到Qt 4.8的PostgreSQL 8.4.9 bytea
列中。
我的代码如下所示:
QImage image;
QByteArray ba;
QBuffer buffer(&ba);
image.save(&buffer, "PNG"); // Save the QImage data into the QBuffer
QSqlQuery query = QSqlQuery(database);
query.prepare("INSERT INTO images (image) "
"VALUES (:image)");
query.bindValue(":image", ba);
query.exec();
qDebug() << query.lastError().text();
这样可行,但我收到以下错误:
警告:在字符串文字LINE 1中非标准使用\:... XECUTE
qpsqlpstmt_1('\ _ 211PNG ...提示:使用转义字符串语法 反斜杠,例如E'\'
如何正确转义数据以避免此警告?
编辑:
以下是有关此主题的一些基本信息: http://www.postgresql.org/docs/8.4/static/datatype-binary.html
我看到它的方式,在传递给E''::bytea
之前,每个字节应该被bindValue
包围。我怎么能做到这一点?
答案 0 :(得分:3)
查看.bindValue
的{{3}} - 您最有可能需要docs该值为二进制:
query.bindValue(":image", ba, QSql::In | QSql::Binary);
答案 1 :(得分:0)
您是否尝试在QByteArray周围使用E'?我不知道这是否适用于图像,但它似乎适用于字符串。