基于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
{
///
///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;
}
}
}