Я пытаюсь вставить двоичные данные (QImage
) в столбец PostgreSQL 8.4.9 bytea
из Qt 4.8.
Мой код выглядит так:
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 ... СОВЕТ: используйте синтаксис escape-строки для
обратная косая черта, например, E '\'
Как правильно избежать данных, чтобы избежать этого предупреждения?
РЕДАКТИРОВАТЬ:
Вот некоторая важная информация по этой теме:
http://www.postgresql.org/docs/8.4/static/datatype-binary.html
Как я вижу, каждый байт должен быть окружен E''::bytea
, прежде чем перейти к bindValue
. Как мне это сделать?