FIREDAC不能识别SQL的某些字段类型
FIREDAC不能识别SQL的某些字段类型
经常见有网友有类似的提问:请问各位,在DataSnap中使用SQL数据SUM函数,如果是统计浮点型数值的话,返回是乱码,哪位是什么原因?
其实这不是DATASNAP的问题,而是FIREDAC的。
SQL查询使用SUM(field)函数以后,FIREDAC便不能识别SUM()后的字段类型。
导致在客户端呈现的后果:数值显示不对。许多人遇到过了此种情况,认为非常不可思议的BUG。
笔者在使用MSSQL\MYSQL\ORACEL的过程中,发现均有某些字段不能被数据引擎识别的情况。
解决的方法有2种:
1)在SQL语句中,使用CAST()或convert(),转换sum(field)为指定的字段类型;
2)在FIREDAC里面进行数据类型映射,将FIREDAC不能识别的类型映射为它可以识别的类型。
比如FIREDAC不能保存ORACLE的BLOB字段数据:http://www.cnblogs.com/hnxxcxg/p/5599661.html
比如UNIDAC不能识别CLIENTDATASET的TSINGLEFIELD:http://www.cnblogs.com/hnxxcxg/p/6031080.html
比如FIREDAC如何做类型映射:http://www.cnblogs.com/hnxxcxg/p/6089326.html
总结:通用型数据库引擎在细节上都有上面的毛病,笔者发现FIREDAC、UNIDAC。。。都有。
解决办法都如上。
有人问,firedac连mysql,decimal(10,2) 这个类型的数据,在加载到clientdataset时,有些会报bcd overflow。这个有办法解决吗?
FIREDAC可设置精度
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/9420872.html