如何在网站做淘宝页面,个人网站建设目的,网站百度忽然搜索不到,wordpress半次元主题通过OracleDataReader来读取BLOB类型的数据 在实际的应用过程中#xff0c;需要把大块的二进制数据存储在数据库中。读取这些大块的数据#xff0c;可以通过强制类型转换成为byte数组#xff0c;但是当这个二进制数据体够大时#xff08;几十兆或者上百兆#xff09;需要把大块的二进制数据存储在数据库中。读取这些大块的数据可以通过强制类型转换成为byte数组但是当这个二进制数据体够大时几十兆或者上百兆一次并不能获取到他的完整长度所以需要分块获取。 下面提供两种方法供大家参考。 1、直接将BLOB数据转换成为byte数组 long blobDataSize 0; //BLOB数据体实际大小 long readStartByte 0;//从BLOB数据体的何处开始读取数据 int bufferStartByte 0;//将数据从buffer数组的何处开始写入 int hopeReadSize 1024; //希望每次从BLOB数据体中读取数据的大小 long realReadSize 0;//每次实际从BLOB数据体中读取数据的大小 //CommandBehavior.SequentialAccess将使OracleDataReader以流的方式加载BLOB数据 OracleDataReader dr cmd.ExecuteReader(CommandBehavior.SequentialAccess); byte[] buffer null; while (dr.Read()) { blobDataSize dr.GetBytes(0, 0, null, 0, 0); //获取这个BLOB数据体的总大小 buffer new byte[blobDataSize]; realReadSize dr.GetBytes(0, readStartByte, buffer, bufferStartByte, hopeReadSize); //循环每次读取1024byte大小 while ((int)realReadSize hopeReadSize) { bufferStartByte hopeReadSize; readStartByte realReadSize; realReadSize dr.GetBytes(0, readStartByte, buffer, bufferStartByte, hopeReadSize); } //读取BLOB数据体最后剩余的小于1024byte大小的数据 dr.GetBytes(0, readStartByte, buffer, bufferStartByte, (int)realReadSize); //读取完成后BLOB数据体的二进制数据就转换到这个byte数组buffer上去了 } 2、将BLOB数据直接写到文件中去 long readStartByte 0;//从BLOB数据体的何处开始读取数据 int hopeReadSize 1024; //希望每次从BLOB数据体中读取数据的大小 long realReadSize 0;//每次实际从BLOB数据体中读取数据的大小 //CommandBehavior.SequentialAccess将使OracleDataReader以流的方式加载BLOB数据 OracleDataReader dr cmd.ExecuteReader(CommandBehavior.SequentialAccess); while (dr.Read()) { FileStream fs new FileStream(filename, FileMode.Create); byte[] buffer new byte[hopeReadSize]; realReadSize dr.GetBytes(0, readStartByte, buffer, 0, hopeReadSize); //循环每次读取1024byte大小并将这些字节写入流中 while ((int)realReadSize hopeReadSize) { fs.Write(buffer, 0, hopeReadSize); readStartByte realReadSize; realReadSize dr.GetBytes(0, readStartByte, buffer, 0, hopeReadSize); } //读取BLOB数据体最后剩余的小于1024byte大小的数据并将这些字节写入流中 realReadSize dr.GetBytes(0, readStartByte, buffer, 0, hopeReadSize); fs.Write(buffer, 0, (int)realReadSize); } 转载自http://blog.csdn.net/lonet/archive/2010/03/03/5342386.aspx转载于:https://www.cnblogs.com/wuhenke/archive/2010/10/25/1860752.html