|  
  OracleLob 與 OracleBFile 的區(qū)別在于前者的數(shù)據(jù)存儲(chǔ)在服務(wù)器上而不是存儲(chǔ)在操作系統(tǒng)的物理文件中。它也可以是一個(gè)讀寫對(duì)象,這一點(diǎn)與 OracleBFile 不同(后者始終為只讀)。 
  若要獲取 OracleLob 對(duì)象,請(qǐng)調(diào)用 GetOracleLob 方法。 
  可以使用如下格式構(gòu)造值為 NULL 的 OracleLob: 
  OracleLob myLob = OracleLob.Null;- 
  
  測試從服務(wù)器返回的 LOB 是否為 NULL 
  if( myLob == OracleLob.Null) 
  或者 
  if( myLob.Value == DBNull.Value ) 
  NULL LOB 的行為與零字節(jié) LOB 的相似之處在于,Read 成功并始終返回零字節(jié)。 
  選擇一個(gè)包含空值的 LOB 列可返回 Null。 
  必須在獲取臨時(shí) LOB 之前開始事務(wù)。否則,OracleDataReader 將不能獲取后面的數(shù)據(jù)。 
  1using System; 
  2using System.Data; 
  3using System.Data.OracleClient; 
  4using System.IO; 
  5 
  6namespace ConnectOracle 
  7{ 
  8    /// <summary> 
  9    /// Oracle數(shù)據(jù)庫Clob字段的更新操作 
  10    /// </summary> 
  11    public class ConnectionOracle 
  12    { 
  13 
  14        public void UpdateClogData() 
  15        { 
  16 
  17            // 
  18            // 操作對(duì)象 
  19            // 
  20             OracleLob lob; 
  21             OracleTransaction txn = null; 
  22             OracleConnection conn = null; 
  23             OracleCommand cmd = null; 
  24             OracleDataReader dr = null; 
  25            string strSql = string.Empty; 
  26            string content = string.Empty; 
  27            string CONNECTSTRING = "User ID=xxxx; Password=xxxx; Data Source=cmsdb_192.168.0.1"; 
  28 
  29            try 
  30            { 
  31                 conn = new OracleConnection(CONNECTSTRING); 
  32                 conn.Open(); 
  33                 txn = conn.BeginTransaction(); 
  34                 cmd = new OracleCommand(strSql,conn, txn); 
  35 
  36                // 
  37                // 注意這里的 FOR UPDATE 進(jìn)行記錄鎖定 
  38                // 
  39                 cmd.CommandText = "SELECT content FROM mytable FOR UPDATE"; 
  40                 dr = cmd.ExecuteReader(); 
  41                 dr.Read(); 
  42 
  43                while(dr.Read()) 
  44                { 
  45                     lob = dr.GetOracleLob(0); 
  46                    if(lob!=OracleLob.Null) 
  47                    { 
  48                         content = lob.Value.ToString(); 
  49 
  50                        // 
  51                        // 進(jìn)行修改操作 
  52                        // 
  53                         content = "這是新的數(shù)據(jù)"; 
  54 
  55                        // 
  56                        // 將新的數(shù)據(jù)值轉(zhuǎn)換成byte[] 
  57                        // 
  58                        byte[] buffer = System.Text.Encoding.Unicode.GetBytes(content); 
  59 
  60                        // 
  61                        // 寫回lob對(duì)象 
  62                        // 
  63                         lob.Write(buffer, 0, buffer.Length); 
  64                     } 
  65 
  66                 } 
  67                // 提交操作 
  68                 txn.Commit(); 
  69                 Console.WriteLine("===============Success================"); 
  70             } 
  71            catch(Exception ex) 
  72            { 
  73                 Console.WriteLine("Error: {0}", ex.ToString()); 
  74             } 
  75            finally 
  76            { 
  77                 dr.Close(); 
  78                 conn.Close(); 
  79                 cmd.Dispose(); 
  80             } 
  81         } 
  82 
  83     } 
  84} 
 
 
  本文出自:億恩科技【www.cmtents.com】 
      
      
		服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] 
       |