读取Oracle大文件类型(BLOB)

10 篇文章 0 订阅
6 篇文章 0 订阅
public   void   ReadLobExample() 
{       
  int   actual   =   0; 
  string   path   =   "e:\\site\\aqjc\\sql\\b.doc "; 
  string   sql   =   "SELECT   tmp_blob   FROM   tmp   where   tmp_id   =   '128 ' "; 
  OracleDataReader   reader   =   cn.GetReader(sql); 
  if(reader.Read()   ==   true) 
  { 
    //读取BLOB字段 
    OracleLob   BLOB   =   reader.GetOracleLob(0); 
     
    this.blobOutFile(blob,path); 
  } 
} 

///   <summary> 
///   将ORACLE数据库中BLOB这段内容输出到硬盘上生成文件 
///   </summary> 
///   <param   name= "BLOB "> BLOB字段内容 </param> 
///   <param   name= "filePathName "> 要生成的文件名,绝对路径 </param> 
public   void   blobOutFile(OracleLob   BLOB,string   filePathName) 
{ 
  //将LOGN值转换为INT值,以便定义BYTE[]长度 
  int   actual   =   Convert.ToInt32(BLOB.Length.ToString()); 
  byte[]   buffer   =   new   byte[actual]; 
  //将BLOB字段内容读取到字节数组里面 
  BLOB.Read(buffer,0,actual); 

  //打开一个文件,如果没有则创建此文件 
  System.IO.FileStream   mys   =   new   FileStream(filePathName,System.IO.FileMode.OpenOrCreate); 
  //将读取到的内容写入到此文件中 
  mys.Write(buffer,0,buffer.Length); 
  //关闭此文件对象 
  mys.Close();         
} 

上述是将ORACLE数据库中的BLOB字段中的文件,生成到硬盘上的方法.你可再配合如下压缩解压缩代码,实现将生成到硬盘上的文件进一步解压缩即可. 

///   <summary> 
///   调用DOS命令,注意多条DOS命令必须以|号隔开 
///   </summary> 
///   <param   name= "argm "> 要操作的DOS命令 </param> 
///   <returns> 返回取到的信息值 </returns> 
static   public   string   mycmd(string   argm)   
{ 
  string   myOutString   =   " "; 
  //开始创建文件   
  Process   p   =   new   Process();   
  p.StartInfo.UseShellExecute   =   false;   
  p.StartInfo.RedirectStandardInput   =   true;   
  p.StartInfo.RedirectStandardOutput   =   true;   
  p.StartInfo.RedirectStandardError   =   true;   
  p.StartInfo.CreateNoWindow   =   true; 
  p.StartInfo.FileName   =   "cmd.exe ";   

  try   
  {   
    p.Start(); 
    string[]   ary   =   argm.Split( '| '); 
    for(int   i=0;i <ary.Length;i++) 
    { 
      p.StandardInput.WriteLine(ary[i].ToString());   
    } 
    p.StandardInput.WriteLine( "exit "); 
    myOutString   =   p.StandardOutput.ReadToEnd(); 
    p.Close();   
  }   
  catch(Exception   ex) 
  {   
    throw   new   Exception   (ex.Message);   
  } 

  return(myOutString); 
} 


调用命令: 
mycmd( "rar   a   d:\\sql\\xxx.rar   d:\\sql ");     


如上即可实现.不过,你必须对你要操作的文件夹赋予aspnet用户修改的权限,否则无法执行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值