oracle 复制工具类,C#工具类OracleHelper,如何基于Oracle.ManagedDataAccess.Client封装

基于Oracle.ManagedDataAccess.Client封装的Oracle工具类OracleHelper,代码如下:

复制代码

usingSystem;

usingSystem.Data;

usingSystem.Collections.Generic;

usingSystem.Configuration;

usingSystem.Text;

usingSystem.IO;

usingOracle.ManagedDataAccess.Client;

//usingSystem.Data.OracleClient;System.Data.OracleClient类曾经不引荐运用

namespaceFly.Util.DataBase

ba137539dcdd991c31a13e4527f7c2c3.png

{

///

///Oracle数据库操作类

///

publicstaticclassOracleHelper

{

///

///执行数据库非查询操作,返回受影响的行数

///

///数据库衔接字符串

///命令的类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前操作影响的数据行数

publicstaticintExecuteNonQuery(stringconnectionString,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

OracleCommandcmd=newOracleCommand();

using(OracleConnectionconn=newOracleConnection(connectionString))

{

PrepareCommand(cmd,conn,null,cmdType,cmdText,cmdParms);

intval=cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

returnval;

}

}

///

///执行数据库事务非查询操作,返回受影响的行数

///

///数据库事务对象

///Command类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前事务操作影响的数据行数

publicstaticintExecuteNonQuery(OracleTransactiontrans,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

OracleCommandcmd=newOracleCommand();

PrepareCommand(cmd,trans.Connection,trans,cmdType,cmdText,cmdParms);

intval=cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

returnval;

}

///

///执行数据库非查询操作,返回受影响的行数

///

///Oracle数据库衔接对象

///Command类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前操作影响的数据行数

publicstaticintExecuteNonQuery(OracleConnectionconnection,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

if(connection==null)

thrownewArgumentNullException(“当前数据库衔接不存在”);

OracleCommandcmd=newOracleCommand();

PrepareCommand(cmd,connection,null,cmdType,cmdText,cmdParms);

intval=cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

returnval;

}

///

///执行数据库查询操作,返回OracleDataReader类型的内存结果集

///

///数据库衔接字符串

///命令的类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前查询操作返回的OracleDataReader类型的内存结果集

publicstaticOracleDataReaderExecuteReader(stringconnectionString,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

OracleCommandcmd=newOracleCommand();

OracleConnectionconn=newOracleConnection(connectionString);

try

{

PrepareCommand(cmd,conn,null,cmdType,cmdText,cmdParms);

OracleDataReaderreader=cmd.ExecuteReader(CommandBehavior.CloseConnection);

cmd.Parameters.Clear();

returnreader;

}

catch

{

cmd.Dispose();

conn.Close();

throw;

}

}

///

///执行数据库查询操作,返回DataSet类型的结果集

///

///数据库衔接字符串

///命令的类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前查询操作返回的DataSet类型的结果集

publicstaticDataSetExecuteDataSet(stringconnectionString,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

OracleCommandcmd=newOracleCommand();

OracleConnectionconn=newOracleConnection(connectionString);

DataSetds=null;

try

{

PrepareCommand(cmd,conn,null,cmdType,cmdText,cmdParms);

OracleDataAdapteradapter=newOracleDataAdapter();

adapter.SelectCommand=cmd;

ds=newDataSet();

adapter.Fill(ds);

cmd.Parameters.Clear();

}

catch

{

throw;

}

finally

{

cmd.Dispose();

conn.Close();

conn.Dispose();

}

returnds;

}

///

///执行数据库查询操作,返回DataTable类型的结果集

///

///数据库衔接字符串

///命令的类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前查询操作返回的DataTable类型的结果集

publicstaticDataTableExecuteDataTable(stringconnectionString,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

OracleCommandcmd=newOracleCommand();

OracleConnectionconn=newOracleConnection(connectionString);

DataTabledt=null;

try

{

PrepareCommand(cmd,conn,null,cmdType,cmdText,cmdParms);

OracleDataAdapteradapter=newOracleDataAdapter();

adapter.SelectCommand=cmd;

dt=newDataTable();

adapter.Fill(dt);

cmd.Parameters.Clear();

}

catch

{

throw;

}

finally

{

cmd.Dispose();

conn.Close();

conn.Dispose();

}

returndt;

}

///

///执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值

///

///数据库衔接字符串

///命令的类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前查询操作返回的结果集中位于第一行第一列的Object类型的值

publicstaticobjectExecuteScalar(stringconnectionString,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

OracleCommandcmd=newOracleCommand();

OracleConnectionconn=newOracleConnection(connectionString);

objectresult=null;

try

{

PrepareCommand(cmd,conn,null,cmdType,cmdText,cmdParms);

result=cmd.ExecuteScalar();

cmd.Parameters.Clear();

}

catch

{

throw;

}

finally

{

cmd.Dispose();

conn.Close();

conn.Dispose();

}

returnresult;

}

///

///执行数据库事务查询操作,返回结果集中位于第一行第一列的Object类型的值

///

///一个已存在的数据库事务对象

///命令类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前事务查询操作返回的结果集中位于第一行第一列的Object类型的值

publicstaticobjectExecuteScalar(OracleTransactiontrans,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

if(trans==null)

thrownewArgumentNullException(“当前数据库事务不存在”);

OracleConnectionconn=trans.Connection;

if(conn==null)

thrownewArgumentException(“当前事务所在的数据库衔接不存在”);

OracleCommandcmd=newOracleCommand();

objectresult=null;

try

{

PrepareCommand(cmd,conn,trans,cmdType,cmdText,cmdParms);

result=cmd.ExecuteScalar();

cmd.Parameters.Clear();

}

catch

{

throw;

}

finally

{

trans.Dispose();

cmd.Dispose();

conn.Close();

conn.Dispose();

}

returnresult;

}

///

///执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值

///

///数据库衔接对象

///Command类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

///当前查询操作返回的结果集中位于第一行第一列的Object类型的值

publicstaticobjectExecuteScalar(OracleConnectionconn,CommandTypecmdType,stringcmdText,paramsOracleParameter[]cmdParms)

{

if(conn==null)thrownewArgumentException(“当前数据库衔接不存在”);

OracleCommandcmd=newOracleCommand();

objectresult=null;

try

{

PrepareCommand(cmd,conn,null,cmdType,cmdText,cmdParms);

result=cmd.ExecuteScalar();

cmd.Parameters.Clear();

}

catch

{

throw;

}

finally

{

cmd.Dispose();

conn.Close();

conn.Dispose();

}

returnresult;

}

///

///执行数据库命令前的准备工作

///

///Command对象

///数据库衔接对象

///事务对象

///Command类型

///Oracle存储过程称号或PL/SQL命令

///命令参数汇合

privatestaticvoidPrepareCommand(OracleCommandcmd,OracleConnectionconn,OracleTransactiontrans,CommandTypecmdType,stringcmdText,OracleParameter[]cmdParms)

{

if(conn.State!=ConnectionState.Open)

conn.Open();

cmd.Connection=conn;

cmd.CommandText=cmdText;

if(trans!=null)

cmd.Transaction=trans;

cmd.CommandType=cmdType;

if(cmdParms!=null)

{

foreach(OracleParameterparmincmdParms)

cmd.Parameters.Add(parm);

}

}

///

///将.NET日期时间类型转化为Oracle兼容的日期时间格式字符串

///

///.NET日期时间类型对象

///Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE(‘2007-12-1′,’YYYY-MM-DD’))

publicstaticstringGetOracleDateFormat(DateTimedate)

{

return”TO_DATE(‘”+date.ToString(“yyyy-M-dd”)+”‘,’YYYY-MM-DD’)”;

}

///

///将.NET日期时间类型转化为Oracle兼容的日期格式字符串

///

///.NET日期时间类型对象

///Oracle日期时间类型格式化限定符

///Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE(‘2007-12-1′,’YYYY-MM-DD’))

publicstaticstringGetOracleDateFormat(DateTimedate,stringformat)

{

if(format==null||format.Trim()==””)format=”YYYY-MM-DD”;

return”TO_DATE(‘”+date.ToString(“yyyy-M-dd”)+”‘,'”+format+”‘)”;

}

///

///将指定的关键字处置为含糊查询时的合法参数值

///

///待处置的查询关键字

///过滤后的查询关键字

publicstaticstringHandleLikeKey(stringsource)

{

if(source==null||source.Trim()==””)returnnull;

source=source.Replace(“[“,”[]]”);

source=source.Replace(“_”,”[_]”);

source=source.Replace(“%”,”[%]”);

return(“%”+source+”%”);

}

///

///执行存储过程

///

///SqlServer数据库衔接对象

///存储过程名

///存储过程参数

///SqlDataReader对象

publicstaticOracleDataReaderRunStoredProcedure(OracleConnectionconnection,stringstoredProcName,IDataParameter[]parameters)

{

OracleDataReaderreturnReader=null;

connection.Open();

OracleCommandcommand=BuildSqlCommand(connection,storedProcName,parameters);

returnReader=command.ExecuteReader(CommandBehavior.CloseConnection);

returnreturnReader;

}

///

///构建SqlCommand对象

///

///数据库衔接

///存储过程名

///存储过程参数

///SqlCommand

privatestaticOracleCommandBuildSqlCommand(OracleConnectionconnection,stringstoredProcName,IDataParameter[]parameters)

{

OracleCommandcommand=newOracleCommand(storedProcName,connection);

command.CommandType=CommandType.StoredProcedure;

foreach(OracleParameterparameterinparameters)

{

command.Parameters.Add(parameter);

}

returncommand;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值