如何用Qt转义二进制数据以插入PostgreSQL数据库
How to escape binary data for insertion into PostgreSQL database with Qt?
我正试图将二进制数据(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
在我看来,在传递给bindValue
之前,每个字节都应该被E''::bytea
包围。我怎样才能做到这一点?
查看.bindValue
的文档-您可能需要指出该值是二进制的:
query.bindValue(":image", ba, QSql::In | QSql::Binary);
您是否尝试在QByteArray周围使用E''?我不知道这是否适用于图像,但它似乎适用于字符串。
postgresql 中的字符串文字和转义字符
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- 使用准备好的语句大容量插入到postgresql
- 如何与LIBPQXX API同时插入数据?(PostgreSQL,线程)
- 有没有办法将 vector<unsigned char> 插入 postgresql 表中,具有 bytea 属性,没有 UTF8 编码错误?
- 高频插入 PostgreSQL,插入的数据要到几分钟后才能选择?
- 如何使用C 使用PostgreSQL插入数据库表中
- 如何将time_t插入PostgreSQL时间戳字段
- PostgreSQL字节二进制数据插入
- QSqlQuery将QByteArray作为字符串插入PostgreSQL
- 通过libpqxx将数据插入PostgreSQL时出现问题
- 如何用Qt转义二进制数据以插入PostgreSQL数据库
- 在PostgreSQL中使用libpq从远程计算机插入二进制大对象(BLOB)
- 如何使用C++libpqxx API将二进制数据插入PostgreSQL BYTEA列