如何将RAR文件写入blob字段中,再将blob中的数据导出,保存为RAR
rt   
 需要代码 
 Oracle数据库
------解决方案--------------------不知其所以然 (N)
------解决方案--------------------using System; 
 using System.Data.OracleClient; 
 using System.IO;   
 namespace fenghua.Data.Oracle 
 { 
     /**////  <summary>  
     /// Class1 的摘要说明。 
     ///  </summary>  
     public class OracleLobData 
     { 
         private OracleConnection conn; 
         public OracleLobData() 
         { 
             // 
             // TODO: 在此处添加构造函数逻辑 
             // 
         }   
         /**//* 
          * 在调用此函数之前需要写插入一个字符串到 BLOB 中比如: 
          * Select some data. 
          * Table Schema: 
          *         "CREATE TABLE tablewithlobs (a int, b BLOB, c CLOB, d NCLOB) "; 
          *         "INSERT INTO tablewithlobs values (1,  'AA ',  'AAA ', N 'AAAA ') "; 
          * 否则程序会在 OracleLob tempLob    = reader.GetOracleLob(0) 处出错。 
          */ 
         /**////  <summary>  
         /// 文件写入到 Oracle Blob 字段中。 
         ///  </summary>  
         ///  <param name= "idData "> id 值 </param>  
         ///  <param name= "fileName "> 文件名 </param>  
         ///  <param name= "id "> id 键 </param>  
         ///  <param name= "blob "> blob 键 </param>  
         ///  <param name= "tableName "> 表名 </param>  
         public void WriteBlob(int idData, string fileName, string id, string blob, string tableName) 
         { 
             string connString =  "server=oratest;User ID=kttest;Password=test "; 
             using(conn = new OracleConnection(connString)) 
             { 
                 try 
                 { 
                     conn.Open(); 
                     OracleCommand cmd = conn.CreateCommand();   
                     // 利用事务处理(必须) 
                     OracleTransaction transaction = cmd.Connection.BeginTransaction(); 
                     cmd.Transaction = transaction;   
                     // 获得 OracleLob 指针 
                     cmd.CommandText =  "select  " + blob +  " from  " + tableName +  " where  " + id +  " =  " + idData +  " FOR UPDATE "; 
                     OracleDataReader reader = cmd.ExecuteReader(); 
                     using(reader) 
                     { 
                         //Obtain the first row of data. 
                         reader.Read(); 
                         //Obtain a LOB. 
                         OracleLob tempLob    = reader.GetOracleLob(0);   
                         // 将文件写入 BLOB 中 
                         FileStream fs = new FileStream(fileName,FileMode.Open); 
                         tempLob.BeginBatch(OracleLobOpenMode.ReadWrite); 
                         int length = 10485760; 
                         byte[] Buffer = new byte[length]; 
                         int i; 
                         while((i = fs.Read(Buffer,0,length)) >  0) 
                         { 
                             tempLob.Write(Buffer,0,i); 
                         } 
                         fs.Close(); 
                         tempLob.EndBatch(); 
                         cmd.Parameters.Clear(); 
                     } 
                     // 提交事务 
                     transaction.Commit(); 
                 } 
                 catch(Exception ex) 
                 { 
                     throw ex; 
                 } 
                 finally