zoukankan      html  css  js  c++  java
  • c#操作oracle lob字段[转自 芽芽的回收站]

    public static void WriteClob(string table_name, string fieldname ,string table_id, string id, int column, string content)
    {
    OracleConnection myCn = OracleModel.GetConnection(DbKey.ORA);
    OracleCommand myCmd = new OracleCommand();
    try
    {
    myCn.Open();
    }
    catch (System.Data.OracleClient.OracleException e)
    {
    throw new Exception(e.Message);
    }
    OracleTransaction myTrans = myCn.BeginTransaction();
    try
    {
    myCmd.Connection = myCn;
    myCmd.Transaction = myTrans;
    myCmd.CommandText = "SELECT "+fieldname+" FROM " + table_name + " where " + table_id + " = '" + id + "' FOR UPDATE";
    OracleDataReader reader = myCmd.ExecuteReader();
    using (reader)
    {
    reader.Read();
    OracleLob CLOB = reader.GetOracleLob(column); //column为lob类型所在列
    Encoding utf16 = Encoding.Unicode;       
    byte[] buffer = utf16.GetBytes(content);
    if (buffer.Length % 2 == 0)
    CLOB.Write(buffer, 0, buffer.Length);  //这里的参数必须为偶数
    else
    CLOB.Write(buffer, 0, (buffer.Length - 1));
    myTrans.Commit();
    }
    }
    catch (System.Data.OracleClient.OracleException e)
    {
    myTrans.Rollback();
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
    public static string ReadClob(string table_name, string fieldname,string table_id, string id, int column)
    {
    OracleConnection myCn = OracleModel.GetConnection(DbKey.ORA);
    OracleCommand myCmd = new OracleCommand();
    try
    {
    myCn.Open();
    }
    catch (System.Data.OracleClient.OracleException e)
    {
    throw new Exception(e.Message);
    }
    OracleTransaction myTrans = myCn.BeginTransaction();
    try
    {
    myCmd.Connection = myCn;
    myCmd.Transaction = myTrans;
    myCmd.CommandText = "SELECT "+fieldname+" FROM " + table_name + " where " + table_id + " = '" + id + "'";
    OracleDataReader reader = myCmd.ExecuteReader();
    using (reader)
    {
    reader.Read();
    OracleLob CLOB = reader.GetOracleLob(column);

    byte[] buffer = new byte[(int)CLOB.Length];
    CLOB.Read(buffer,0,(int)CLOB.Length);

    Encoding utf16 = Encoding.Unicode;
    string final = utf16.GetString(buffer);
    myTrans.Commit();
    return final;
    }
    }
    catch (System.Data.OracleClient.OracleException e)
    {
    myTrans.Rollback();
    return "";
    }
    finally
    {
    myCmd.Dispose();
    myCn.Close();
    }
    }
  • 相关阅读:
    希尔排序例子
    C
    重构最大堆的例子
    基于堆的优先队列和用优先队列排序的例子
    堆排序例子
    分治法示例
    三路划分的快速排序算法
    二叉搜索例子
    标准快速排序
    【转载】JAVA5新特性
  • 原文地址:https://www.cnblogs.com/Godblessyou/p/1778955.html
Copyright © 2011-2022 走看看