对oracle大对象(Blob,Clob)操作(增,删,改)的C#代码(二)

clob的操作

using System;
using Fjeptri.DataAccess.DataHelper;
using System.Data.OracleClient;
using System.Data;
using System.IO;
using System.Windows.Forms;
using blank;

namespace WindowsApplication1
{
 /// <summary>
 /// Clob 的摘要说明。
 /// </summary>
 public class Clob
 {
  public Clob()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  public void InsertClob() //插入Clob内容
  {
   //输入文件内容
   Stream stream = Stream.Null;
   OpenFileDialog openFileDialog = new OpenFileDialog();
   openFileDialog.CheckFileExists = true;
   if (openFileDialog.ShowDialog() == DialogResult.OK)
   {
    stream = openFileDialog.OpenFile();
    string fileName = openFileDialog.FileName;
   }
   else
   {
    return;
   }
   stream.Position =0 ;
   StreamReader streamReader = new StreamReader(stream);
   string context = streamReader.ReadToEnd();
   
   //向数据库提交内容。
   OracleConnection conn = new OracleConnection(ConfigInfo.GetConnectionString());
   if(conn.State == ConnectionState.Closed)
   {
    conn.Open();
   }
   OracleTransaction transaction =conn.BeginTransaction();
   string Create="insert into tablewithlobs(a,c) values(tablewithlobs_seq.nextval,:Clob)";
   OracleParameter[] param=new OracleParameter[1];
   param[0]=new OracleParameter("Clob",OracleType.Clob);
   param[0].Value = context;
   OracleHelper.ExecuteNonQuery(transaction,CommandType.Text,Create,param);

   transaction.Commit();
   conn.Close();
   streamReader.Close();
   stream.Close();
   MessageBox.Show("插入成功!");
  }

  public void ReadCLob(decimal A) //读出Clob内容
  {
   //从数据库读出内容
   string Read = "select c from tablewithlobs where a =:a";
   OracleParameter[] param=OracleHelper.GetCacheParameter(Read);
   if(param==null)
   {
    param=new OracleParameter[1];
    param[0]=new OracleParameter("a",OracleType.Number);
    OracleHelper.CacheParameter(Read,param);
   }
   param[0].Value = A;
   OracleDataReader dr = OracleHelper.ExecuteReader(ConfigInfo.GetConnectionString(),CommandType.Text,Read,param);
   OracleLob clob = OracleLob.Null;
   while(dr.Read())
   {
    clob = dr.GetOracleLob(0);
   }
   
   //打开保存内容的文件
   string filename =string.Empty;
   byte[] buffer=null;
   SaveFileDialog saveFileDialog = new SaveFileDialog();
   if(saveFileDialog.ShowDialog() == DialogResult.OK)
   {
    filename = saveFileDialog.FileName;
   }
   if(filename == string.Empty)
   {
    MessageBox.Show("请确定保存的文件路径!");
    return;
   }

   //将Clob类型的内容转化成文件流类型
   buffer = new byte[clob.Length];
   clob.Read(buffer,0,buffer.Length);

   //将内容写入文件
   FileStream fs= new FileStream(filename,FileMode.OpenOrCreate);
   fs.Write(buffer,0,buffer.Length);
   fs.Close();
   MessageBox.Show("读取成功!");
  }
  
  public void DeleteClob(decimal A) //删除Clob内容
  {
   OracleConnection conn = new OracleConnection(ConfigInfo.GetConnectionString());
   conn.Open();
   OracleTransaction transaction = conn.BeginTransaction();
   string Delete="delete tablewithlobs where a=:a";
   OracleParameter[] param=OracleHelper.GetCacheParameter(Delete);
   if(param==null)
   {
    param=new OracleParameter[1];
    param[0]=new OracleParameter("a",OracleType.Number);
    OracleHelper.CacheParameter(Delete,param);
   }
   param[0].Value=A;
   OracleHelper.ExecuteNonQuery(transaction,CommandType.Text,Delete,param);
   transaction.Commit();
   conn.Close();
   MessageBox.Show("删除成功!");
  }

  public void UpdateBlob(decimal A) //更新Clob内容
  {
   //提交更新的文件内容
   Stream stream = Stream.Null;
   OpenFileDialog openFileDialog = new OpenFileDialog();
   string fileName = openFileDialog.FileName;
   openFileDialog.CheckFileExists = true;
   if (openFileDialog.ShowDialog() == DialogResult.OK)
   {
    stream = openFileDialog.OpenFile();
   }
   else
   {
    return;
   }
   StreamReader streamReader = new StreamReader(stream);
   string Context = streamReader.ReadToEnd();

   //更新数据库内容
   string Update = "update tablewithlobs set c = :context where a = :a;";
   OracleConnection conn = new OracleConnection(ConfigInfo.GetConnectionString());
   conn.Open();
   OracleTransaction transaction = conn.BeginTransaction();
   OracleParameter[] param=OracleHelper.GetCacheParameter(Update);
   if(param==null)
   {
    param=new OracleParameter[2];
    param[0]=new OracleParameter("a",OracleType.Number);
    param[1]=new OracleParameter("context",OracleType.Clob);
    OracleHelper.CacheParameter(Update,param);
   }
   param[0].Value = A;
   param[1].Value = Context;
   OracleHelper.ExecuteNonQuery(transaction,CommandType.Text,Update,param);
   
   transaction.Commit();
   conn.Close();
   streamReader.Close();
   stream.Close();
   MessageBox.Show("更新成功!");
  }

 }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值