数据转换冲突及转换过程中大对象的处理
2008-09-02 10:00:25 来源:WEB开发网数据转换过程中大对象的处理
大对象类型概述:
大对象类型BLOB全称为Binary Large Objects,即二进制大对象。可以把BLOB区别为三种形式:声像数据、二进制数据和大文本数据。因此,最常见的应用就是存储图形、声音等对象,此外大二进制对象、OLE对象也可以通过BLOB类型存入数据库,如果文本对象过大,超出了文本类型的规定长度,则必须用BLOB字段进行存储。我们在经常使用的编程环境中并不能直接支持BLOB字段,因此需要调用相应的函数完成BLOB的使用。
不同的数据库系统对大对象类型的支持不同,常用数据库系统支持的大对象数据类型如表4所示:
数据库系统支持的大对象数据类型:
SQL SERVER "sql_variant","ntext","image","varbinary","binary","text"
ORACLE "BLOB","LONG RAW","BFILE","RAW","CLOB","LONG"
SYBASE "LONG VARchar"
VFP "MEMO"
ACCESS "OLE OBJECT","MEMO"
KINGBASE "blob","text","bytea","varbinary","binary","text"
大对象的存取方法:
(1)利用MFC提供的CLongBinary类:
VC存取大对象数据有众多方法,如OLE、ActiveX等,而VC的MFC提供的CLongBinary类可以方便地实现存取BLOB字段。使用CLongBinary类可以存取超过MAXINT数目的数据,最大为可以得到的内存容量。但数据完全保存在内存中,对超大量数据消耗太大。
(2)利用ODBC的SQLGetData和SQLPutData函数:
对于不能存储在单一缓冲区中的数据,在行中的其他数据已被获取之后,可以直接用SQLGetData分批从驱动程序检索这些数据。为了从一列检索长数据,应用程序首先调用SQLFetchScroll或SQLFetch移动一行,并且调用SQLGetData获取绑定列的数据。SQLPutData允许在应用程序语句执行时,把参数或字段送到驱动程序。该函数用来把字符或二进制数值送到。
更多精彩
赞助商链接