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("更新成功!");
}
}
}