oracle helper怎么写,OracleHelper

最近用到了对Oracle的操作,不记得在哪里有见过Oracle helper,自己弄了下来又稍微改了改,现在放上来以备不时之需。

view plaincopy to clipboardprint?

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.OracleClient;

using System.Data;

using System.IO;

namespace Test.数据操作层

{

class OracleHelper

{

//数据库连接对像

private OracleConnection conn = null;

//数据库命令对像

private OracleCommand cmd = new OracleCommand();

//DataAdapter对像

private OracleDataAdapter adapter = new OracleDataAdapter();

private OracleParameter parameter = new OracleParameter();

private OracleDataReader reader = null;

private OracleTransaction trans = null;

///

/// 该实例使用的数据库连接字符串

///

private string connectionString = "";

///

/// 数据库类型

///

public System.Data.DbType DatabaseType

{

get

{

return new System.Data.DbType();

}

}

///

/// 数据库DataReader对像

///

public System.Data.IDataReader DataReader

{

get

{

return this.reader;

}

set

{

reader = (OracleDataReader)value;

}

}

public System.Data.IDbConnection DbConnection

{

get

{

if (conn == null)

{

conn = new OracleConnection(connectionString);

}

return conn;

}

}

public System.Data.IDbCommand DataCommand

{

get

{

return this.cmd;

}

set

{

cmd = (OracleCommand)value;

}

}

///

/// OracleDataAdapter

///

public System.Data.IDbDataAdapter DataAdapter

{

get

{

if (adapter != null)

{

return adapter;

}

else

{

adapter = new OracleDataAdapter();

return adapter;

}

}

}

///

/// 打开数据库连接

///

public void Open()

{

if (connectionString == "")

{

string UserId = "cyy";

string Password = "cyy";

string DataSource = "orcl";

connectionString = "Data Source = "+DataSource+ ";User ID=" + UserId + ";Password=" + Password;

}

if (conn == null)

{

conn = new OracleConnection(connectionString);

conn.Open();

}

else

{

if (conn.State == ConnectionState.Closed)

conn.Open();

}

}

///

/// 关闭数据库连接

///

public void Close()

{

if (conn != null && conn.State == ConnectionState.Open)

{

conn.Close();

}

}

///

/// 开始执行数据库事务

///

///

public System.Data.IDbTransaction BeginTransaction()

{

Open();

trans = conn.BeginTransaction();

return trans;

}

///

/// 开始数据库连接

///

///

///

public System.Data.IDbTransaction BeginTransaction(IsolationLevel isolationLevel)

{

Open();

trans = conn.BeginTransaction(isolationLevel);

return trans;

}

///

/// 执行无返回值的操作

///

/// 数据操作字符串

/// 返回影响的行数

public int ExecuteNonQuery(string commandText)

{

Open();

int rValue = 0;

cmd.Connection = conn;

try

{

cmd.CommandText = commandText;

cmd.CommandType = CommandType.Text;

rValue = cmd.ExecuteNonQuery();

}

catch (Exception e)

{

this.Close();

throw e;

}

return rValue;

}

///

/// 执行无返回值的数据操作命令

///

/// 返回影响的行数

public int ExecuteNonQuery()

{

Open();

int rValue = 0;

cmd.Connection = conn;

try

{

rValue = cmd.ExecuteNonQuery();

}

catch (Exception e)

{

this.Close();

throw e;

}

return rValue;

}

///

/// 执行数据库操作命令

///

/// 数数据库接操命令

/// 事务对像

/// 受影响的行数

public int ExecuteNonQuery(string commandText, System.Data.IDbTransaction trans)

{

int rValue = 0;

cmd.Connection = conn;

cmd.Transaction = (OracleTransaction)trans;

try

{

cmd.CommandText = commandText;

cmd.CommandType = CommandType.Text;

rValue = cmd.ExecuteNonQuery();

}

catch (Exception e)

{

trans.Rollback();

this.Close();

throw e;

}

return rValue;

}

///

/// 更新整个DataTable

///

/// 要更新的DataTable

/// 更新的表名

///

public int UpdateDataTable(DataTable table, string tableName)

{

int rValue = 0;

try

{

this.Open();

cmd.Connection = this.conn;

cmd.CommandText = "select * from " + tableName;

OracleDataAdapter da = new OracleDataAdapter(cmd);

OracleCommandBuilder cmdBuilder = new OracleCommandBuilder(da);

da.UpdateCommand = cmdBuilder.GetUpdateCommand();

rValue = da.Update(table);

da.Dispose();

}

catch (OracleException ex)

{

this.Close();

throw ex;

}

return rValue;

}

///

/// 插入整个DataTable

///

/// 要插入的DataTable

/// 插入的表名

///

public int InsertDataTable(DataTable table, string tableName)

{

int rValue = 0;

try

{

this.Open();

cmd.Connection = this.conn;

cmd.CommandText = "select * from " + tableName;

OracleDataAdapter da = new OracleDataAdapter(cmd);

OracleCommandBuilder cmdBuilder = new OracleCommandBuilder(da);

da.InsertCommand = cmdBuilder.GetInsertCommand();

rValue = da.Update(table);

da.Dispose();

}

catch (OracleException ex)

{

this.Close();

throw ex;

}

return rValue;

}

///

/// 执着行数据库操作命令

///

/// 返回单个操作结果

public object ExecuteScalar()

{

try

{

this.Open();

cmd.Connection = conn;

return cmd.ExecuteScalar();

}

catch (OracleException ex)

{

this.Close();

throw ex;

}

}

///

/// 执着行数据库操作命令

///

/// 据库操作命令字符串

/// 返回单个操作结果

public object ExecuteScalar(string commandText)

{

OracleCommand command = new OracleCommand(commandText);

object obj = null;

try

{

this.Open();

command.Connection = this.conn;

obj = command.ExecuteScalar();

}

catch (OracleException ex)

{

this.Close();

throw ex;

}

finally

{

command.Dispose();

}

return obj;

}

///

/// 执行数据库操作命令

///

/// 据库操作命令字符串

/// 填充数据集中的表名

/// 执行结果数据集

public System.Data.DataSet ExecuteDataSet(string commandText, string aTableName)

{

Open();

DataSet ds = new DataSet();

cmd.CommandText = commandText;

adapter.SelectCommand = cmd;

adapter.SelectCommand.Connection = conn;

adapter.Fill(ds, aTableName);

return ds;

}

///

/// 根据DataCommand执行命令

/// 调用之前需将DataCommand赋值

///

///

/// 成功时返回DataSet

public System.Data.DataSet ExecuteDataSet(string aTableName)

{

DataSet ds = new DataSet();

this.Open();

adapter.SelectCommand = cmd;

adapter.SelectCommand.Connection = conn;

adapter.Fill(ds, aTableName);

return ds;

}

///

/// 执行数据库操作命令

///

/// 据库操作命令字符串

/// 返回数据读取器DataReader

public System.Data.IDataReader ExecuteReader(string commandText)

{

Open();

cmd.Connection = this.conn;

cmd.CommandText = commandText;

reader = cmd.ExecuteReader();

return reader;

}

///

/// 返回指定sql语句的DataTable

///

///

///

public DataTable ExecuteDataTable(string commandText)

{

DataTable dt = new DataTable();

try

{

Open();

cmd.Connection = conn;

cmd.CommandType = CommandType.Text;

cmd.CommandText = commandText;

OracleDataAdapter da = new OracleDataAdapter(cmd);

da.SelectCommand = cmd;

da.Fill(dt);

}

catch (OracleException e)

{

throw e;

}

finally

{

Close();

}

return dt;

}

///

/// 关闭数据读取器

///

public void ReaderClose()

{

reader.Close();

}

///

/// 回滚事务

///

public void RollBack()

{

this.trans.Rollback();

}

///

/// 写入Blob字段

///

/// sql语句,执行结果为BLOB数据

/// 本地文档的路径

public void WriteBlob(string commandText, string DocumentAddress)

{

try

{

Open();

cmd.Connection = conn;

cmd.CommandType = CommandType.Text;

cmd.CommandText = commandText;

// 利用事务处理(必须)

OracleTransaction transaction = cmd.Connection.BeginTransaction();

cmd.Transaction = transaction;

reader = cmd.ExecuteReader();

using (reader)

{

//Obtain the first row of data.

reader.Read();

OracleLob BLOB = reader.GetOracleLob(0);

//Perform any desired operations on the LOB, (read, position, and so on).

//...

//Example - Writing binary data (directly to the backend).

//To write, you can use any of the stream classes, or write raw binary data using

//the OracleLob write method. Writing character vs. binary is the same;

//however note that character is always in terms of Unicode byte counts

FileStream DataStream = new FileStream(DocumentAddress, FileMode.Open);

BLOB.BeginBatch(OracleLobOpenMode.ReadWrite);

int length = 30485760;

byte[] Buffer = new byte[length];

int i;

while ((i = DataStream.Read(Buffer, 0, length)) > 0)

{

BLOB.Write(Buffer, 0, i);

}

DataStream.Close();

BLOB.EndBatch();

//Commit the transaction now that everything succeeded.

//Note: On error, Transaction.Dispose is called (from the using statement)

//and will automatically roll-back the pending transaction.

cmd.Transaction.Commit();

}

}

catch (OracleException e)

{

cmd.Transaction.Rollback();

throw e;

}

finally

{

Close();

}

}

///

/// 读出Blob字段

///

/// sql语句,执行结果为BLOB数据

/// 将要把BLOB数据保存为的文档的路径

public void ReadBlob(string commandText, string DocumentAddress)

{

try

{

Open();

cmd.Connection = conn;

cmd.CommandType = CommandType.Text;

cmd.CommandText = commandText;

// 利用事务处理(必须)

OracleTransaction transaction = cmd.Connection.BeginTransaction();

cmd.Transaction = transaction;

reader = cmd.ExecuteReader();

reader.Read();

OracleLob BLOB = reader.GetOracleLob(0);

reader.Close();

FileStream DataStream = new FileStream(DocumentAddress, FileMode.Create);

int length = 30485760;

byte[] Buffer = new byte[length];

int i;

while ((i = BLOB.Read(Buffer, 0, length)) > 0)

{

DataStream.Write(Buffer, 0, i);

}

DataStream.Close();

BLOB.Clone();

cmd.Transaction.Commit();

}

catch (OracleException e)

{

cmd.Transaction.Rollback();

throw e;

}

finally

{

Close();

}

}

}

}

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.OracleClient;

using System.Data;

using System.IO;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值