我的开发环境是:Windows 2000 Server + Oracle 8.05 + VC6 
采用ODBC方式连接Oracle 数据库
其中有个表格tcicofig_table我在数据库中有设置类型为Number的字段:facNo,默认值为255
在VC中采用CRecordSet方式进行编程,这里facNo的类型我设置为Byte型了,这样,第一次当表格没有任何数据的时候,可以把记录保存到数据库中,但是再次打开记录或者保存记录的时候就查询不到也无法再次插入记录了。
跟进入程序发现出现异常,显示数据溢出了。后来发现数据库中的255在VC中溢出了,如果修改为127以下就没有问题,128+就出现错误了。而同样的程序在SQL Server2000中255读取出来还是255。我怀疑是Oracle的读取数据库的引擎在处理Number和Byte类型转换是出现了无符号型和有符号型的差别,有什么办法解决这个问题。

解决方案 »

  1.   

    1。你知道number在oracle中是几位吗?
    2。sql server 2000中有number数据类型马?
    3。你知道VC中Byte是几位吗?你对以上文体由正确的答案的时候,就知道应该选用什么类型存储数据了
      

  2.   

    我知道这样设计不合理,但是没有办法,我们的系统原来是在SQL Server上的,现在移置到Oracle,为了保存系统程序的统一,不得不采用这个办法。Number型和Byte型位数是不一样,有没有办法强制转换呢?
      

  3.   

    如果从int类型或者long类型强制转换成byte类型,得出来得值是不正确的,从byte往int强制转化没有问题