代码如下所示:
OracleConnection objOcon=new OracleConnection("user id=system;data source=user;password=pass");
OracleCommand objOcmd = new OracleCommand("select  sopinstanceuid,dicomimage from images where getdate is not null", objOcon);
FileStream fs;                          
BinaryWriter bw;                         int bufferSize = 30;     //可能出问题的地方             
byte[] outbyte = new byte[bufferSize];  
long retval;                           
long startIndex = 0;                     string pub_id = ""; 

pubsConn.Open();
OracleDataReader myReader = logoCMD.ExecuteReader(CommandBehavior.SequentialAccess);
while (myReader.Read())
{
pub_id = myReader.GetString(0);   fs = new FileStream("c:\\dicomimage\\" +pub_id + ".dcm", FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs); startIndex = 0; retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize); while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush(); startIndex += bufferSize;
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);

}
if (retval>0)
{
bw.Write(outbyte, 0, (int)retval - 1);
}
bw.Flush(); bw.Close();
fs.Close();
} myReader.Close();
pubsConn.Close();代码本身是可以从数据库下载字段的,只是当把变量bufferSize 改为大于30后,读出来的格式不能识别了。bufferSize 数字比较小时可以识别,但速度超级慢!!!!bufferSize 为1时,读一张图大约需要20-30分钟。为30时大约需要45秒钟,(图片一般在500-600K左右),各位有没有什么办法优化一下程序,或者是有没有其它的解决方法???????谢了!!!急!!!!!!!!!