假设我有一个 PostgreSQL 数据库,并且我将 int64_t 或 uint64_t 的最大值存储在 NUMERIC 类型的列中(我无法使用 BIGINT 类型,因为 PostgreSQL 中没有 uint64_t 的无符号变体)。
查看https://doc.qt.io/qt-6/sql-types.html#postgresql-data-types,似乎NUMERIC映射到qreal(= double),这显然不会能够在不损失精度的情况下保存这些值。
有没有办法在不修改驱动程序的情况下将默认的 QVariant 映射重新映射到其他内容?或者,是否有其他方法可以检索这些值而不将它们转换为数据库端的字符串?
如果将数据库的数值精度策略设置为
QSql::HighPrecision
,则 NUMERIC 字段将以 QString 形式返回。
db.setNumericalPrecisionPolicy(QSql::HighPrecision);