比如:我要保存图片、文本文件、Word文件各自最好用哪种数据类型的呀?我在读写Oracle8i时,用第一份代码能正确的读写LongRaw字段(保存图片能写进去和读出来,没有测试过其他的文件格式),但该代码不能读写Long型、BLOB或者CLOB型的字段。而用我的第二份代码可以读写Blob字段,但只是保存纯文本文件没有问题(保存图片和Word文件不能正确的读出来)。为什么会这样?

解决方案 »

  1.   

    字符类
    LONG:可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
    二进制类:
    LONG RAW:
    可变长二进制数据,最长2G
    大对象类:
    CLOB:用来存储单字节的字符数据
    NCLOB:用来存储多字节的字符数据
    BLOB:用于存储二进制数据
    BFILE:存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。CLOB,NCLOB,BLOB都是内部的LOB类型,最长4G,没有 LONG只能有一列的限制
    我要保存图片、文本文件、Word文件各自最好用哪种数据类型的呀?
    BLOB最好,LONG RAW也不错。
      

  2.   

    关于你的后两个问题,可能是因为BLOB/CLOB/LONG/LongRaw是三类变量
    这个我就不太清楚了
      

  3.   

    建议用lob
    long是oracle将要废弃的类型
      

  4.   

    我是个Oracle的菜尿,我想问一下,LONG REW的读取和写入是怎么做的?
    最好是VC++的例子,谢谢了
      

  5.   

    在一本电子书上看到的,觉得可能有点用,再贴出来了
    CHAR固定长度字符域,最大长度可达2000个字节
    NCHAR多字节字符集的固定长度字符域,长度随字符集而定,最多为2000个字符或2000个字节
    VARCHAR2可变长度字符域,最大长度可达4000个字符
    NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节
    DATE用于存储全部日期的固定长度(7个字节)字符域,时间作为日期的一部分存储其中。除非
    通过设置init.ora文件的NLS_DATE_FORMAT参数来取代日期格式,否则查询时,日期以
    DD-MON-YY格式表示,如13-APR-99表示1999.4.13
    NUMBER可变长度数值列,允许值为0、正数和负数。NUMBER值通常以4个字节或更少的字节存

    LONG可变长度字符域,最大长度可到2GB
    RAW表示二进制数据的可变长度字符域,最长为2000个字节
    LONGRAW表示二进制数据的可变长度字符域,最长为2GB
    MLSLABEL只用于TrustedOracle,这个数据类型每行使用2至5个字节
    BLOB二进制大对象,最大长度为4GB
    CLOB字符大对象,最大长度为4GB
    NCLOB多字节字符集的CLOB数据类型,最大长度为4GB
    BFILE外部二进制文件,大小由操作系统决定
    ROWID表示RowID的二进制数据,Oracle8RowID的数值为10个字节,在Oracle7中使用的限定
    RowID格式为6个字节
    UROWID用于数据寻址的二进制数据,最大长度为4000个字节