【发布时间】:2012-02-15 12:28:59
【问题描述】:
我正在尝试将二进制数据 (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();
这可行,但我收到以下错误:
警告:在字符串文字中非标准使用 \ 第 1 行:...XECUTE
qpsqlpstmt_1 ('\211PNG... 提示:使用转义字符串语法
反斜杠,例如 E'\'
如何正确转义数据以避免出现此警告?
编辑:
以下是有关此主题的一些基本信息: http://www.postgresql.org/docs/8.4/static/datatype-binary.html
在我看来,每个字节都应该被E''::bytea包围,然后再传递给bindValue。我怎样才能做到这一点?
【问题讨论】:
-
我不确定你想通过提供列名应该去哪里的二进制数据来做什么(在你的 INSERT 语句中第一次提到
:image)。 -
那只是一个错字。我从代码中清除了与此问题无关的列,以使问题更笼统。
标签: c++ qt postgresql