始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Oracle数据库Clob字段的更新操作

发布时间:  2012/9/20 16:41:57

OracleLob 与 OracleBFile 的区别在于前者的数据存储在服务器上而不是存储在操作系统的物理文件中。它也可以是一个读写对象,这一点与 OracleBFile 不同(后者始终为只读)。

  若要获取 OracleLob 对象,请调用 GetOracleLob 方法。

  可以使用如下格式构造值为 NULL 的 OracleLob:
  OracleLob myLob = OracleLob.Null;-
 

  测试从服务器返回的 LOB 是否为 NULL
  if( myLob == OracleLob.Null)
  或者
  if( myLob.Value == DBNull.Value )
  NULL LOB 的行为与零字节 LOB 的相似之处在于,Read 成功并始终返回零字节。
  选择一个包含空值的 LOB 列可返回 Null。
  必须在获取临时 LOB 之前开始事务。否则,OracleDataReader 将不能获取后面的数据。

  1using System;
  2using System.Data;
  3using System.Data.OracleClient;
  4using System.IO;
  5
  6namespace ConnectOracle
  7{
  8    /// <summary>
  9    /// Oracle数据库Clob字段的更新操作
  10    /// </summary>
  11    public class ConnectionOracle
  12    {
  13
  14        public void UpdateClogData()
  15        {
  16
  17            //
  18            // 操作对象
  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 进行记录锁定
  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                        // 进行修改操作
  52                        //
  53                         content = "这是新的数据";
  54
  55                        //
  56                        // 将新的数据值转换成byte[]
  57                        //
  58                        byte[] buffer = System.Text.Encoding.Unicode.GetBytes(content);
  59
  60                        //
  61                        // 写回lob对象
  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.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线