紧急求救,CRecordset读取oracle的number字段有误问题?

FiveBeast 2009-04-22 06:22:10
紧急求救,请大家帮忙一起看看,环境如下:
数据库服务端是unix系统,oracle 10g版本,
客户端为windows server2003环境,客户端装了oracle client for windows,
用mfc的CRecordset通过odbc访问oracle,
odbc驱动配的是oracle提供的"Oracle in OraClient10g_home1"。

现在出现以下问题:
访问oracle表中的某个字段money,类型是number(16,2),会出现分位数丢失的情况,比如库里面是"1234567.89",读出来后变成"1234567.8",该问题出现概率很低,很难重现。

CRecordset打开表的代码大概如下(省略一些判断语句):
CRecordset rs;
rs.Open(CRecordset::snapshot, "select money from table1", CRecordset::none);
CString strmoney;
CRecordset::GetFieldValue((short)0,strmoney);

请各位有经验的高人帮忙找下原因,在线等待,万分感谢!
...全文
145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mynamelj 2009-04-23
  • 打赏
  • 举报
回复
用VARANIT变量试试,可以的话再将它转换成字符串
oyljerry 2009-04-22
  • 打赏
  • 举报
回复
可以自己增加一些log日志,查看当读出数据不对时,一些其他相关数据信息等..
FiveBeast 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]
可以把number字段改成varchar等字符串字段,然后读取字符串,而不用数字
[/Quote]

谢谢oyljerry兄,因为有其他系统也要使用该数据库,如果修改字段类型的话,会连带到其他系统的修改。
我的疑问在于,用此方式访问,如果是类型匹配问题,那么为什么是偶然性的,是否mfc类有bug?
FiveBeast 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mynamelj 的回复:]
干嘛不用ADO访问数据库,DAO基本上属于过时的数据库接口了
[/Quote]

谢谢兄台,因为一些历史原因,odbc框架已经在了,如果修改的话怕影响太广。
oyljerry 2009-04-22
  • 打赏
  • 举报
回复
可以把number字段改成varchar等字符串字段,然后读取字符串,而不用数字
mynamelj 2009-04-22
  • 打赏
  • 举报
回复
干嘛不用ADO访问数据库,DAO基本上属于过时的数据库接口了

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧