我无法从MySQL数据库获取QSql查询/模型/记录来检索二进制数据, 我使用自定义生成的查询语句设置字段:
INSERT INTO `Table`( `id`, `uid`,) VALUES ('1', X'2b40b58f5eb580bd198389e1e435e16da31fc2020f5ea48b');
经过MySql Workbench的检查,并显示了正确的bin值
但是,当我尝试使用以下方法在Qt中检索字段时:
QSqlQueryModel model;
model.setQuery(query);
QSqlRecord record=model.record(0);
QByteArray uid=record.value("uid").toByteArray();
我得到:
"+@\xEF\xBF\xBD\xEF\xBF\xBD^\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\x19\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD""5\xEF\xBF\xBDm\xEF\xBF\xBD\x1F\xEF\xBF\xBD\x02\x0F^\xEF\xBF\xBD\xEF\xBF\xBD"
转换为Hex():
2b40efbfbdefbfbd5eefbfbdefbfbdefbfbd19efbfbdefbfbdefbfbdefbfbd35efbfbd6defbfbd1fefbfbd020f5eefbfbdefbfbd
这当然是不正确的,在我看来,框架无法正确解释特殊字符或发生其他错误... 如何解决此问题?
编辑:
uid设置为BINARY(24)
答案 0 :(得分:0)
好,谢谢大家,这是我的错,数据已正确插入,但是在检索(保存记录的基类)时,我首先将所有值插入QMap<QString, QVariant>
代码最近进行了重构,问题就在那里:我使用了m_values_map.insert(key, value.toString())
(用于回溯兼容性),这导致了隐式参数转换,使事情搞砸了
如果我始终将其保留为QVariant,则不会出现任何问题m_values_map.insert(key, value)
希望对别人有帮助