using System;
using System.Configuration;
using System.Data;
using System.Data.OracleClient;
namespace CallCenterApi.DB {
public class DBOracleHelper
{
public static OracleCommand cmd = null;
public static OracleConnection conn = null;
public static string connstr = ConfigurationManager.ConnectionStrings["oracleconn"].ConnectionString;
public DBOracleHelper()
{ }
#region 建立数据库连接对象
///
/// 建立数据库连接
///
/// 返回一个数据库的连接OracleConnection对象
public static OracleConnection init()
{
try
{
conn = new OracleConnection(connstr);
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
}
catch (Exception e)
{
throw new Exception(e.Message.ToString());
}
return conn;
}
#endregion
#region 设置OracleCommand对象
///
/// 设置OracleCommand对象
///
/// OracleCommand对象
/// 命令文本
/// 命令类型
/// 参数集合
private static void SetCommand(OracleCommand cmd, string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
{
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
cmd.Parameters.AddRange(cmdParms);
}
}
#endregion
#region 执行相应的sql语句,返回相应的DataSet对象
///
/// 执行相应的sql语句,返回相应的DataSet对象
///
/// sql语句
/// 返回相应的DataSet对象
public static DataSet GetDataSet(string sqlstr, OracleParameter[] cmdParms=null)
{
DataSet set = new DataSet();
try
{
OracleCommand cmd = new OracleCommand();
PrepareCommand(cmd, init(), null, sqlstr, cmdParms);
OracleDataAdapter adp = new OracleDataAdapter(cmd);
adp.Fill(set);
conn.Close();
}
catch (Exception e)
{
throw new Exception(e.Message.ToString());
}
return set;
}
///
/// 执行查询语句,返回DataSet
///
/// 查询语句
/// DataSet
public static DataSet Query(string SQLString, params OracleParameter[] cmdParms)
{
using (OracleConnection connection = new OracleConnection(connstr))
{
OracleCommand cmd = new OracleCommand();
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
using (OracleDataAdapter da = new OracleDataAdapter(cmd))
{
DataSet ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (OracleParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
#endregion
#region 执行相应的sql语句,返回相应的DataSet对象
///
/// 执行相应的sql语句,返回相应的DataSet对象
///
/// sql语句
/// 表名
/// 返回相应的DataSet对象
public static DataSet GetDataSet(string sqlstr, string tableName)
{
DataSet set = new DataSet();
try
{
init();
OracleDataAdapter adp = new OracleDataAdapter(sqlstr, conn);
adp.Fill(set, tableName);
conn.Close();
}
catch (Exception e)
{
throw new Exception(e.Message.ToString());
}
return set;
}
#endregion
#region 执行不带参数sql语句,返回所影响的行数
///
/// 执行不带参数sql语句,返回所影响的行数
///
/// 增,删,改sql语句
/// 返回所影响的行数
public static int ExecuteNonQuery(string cmdText)
{
int count;
try
{
init();
cmd = new OracleCommand(cmdText, conn);
count = cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
return count;
}
#endregion
#region 执行带参数sql语句或存储过程,返回所影响的行数
///
/// 执行带参数sql语句或存储过程,返回所影响的行数
///
/// 带参数的sql语句和存储过程名
/// 命令类型
/// 参数集合
/// 返回所影响的行数
public static int ExecuteNonQuery(string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
{
int count;
try
{
init();
cmd = new OracleCommand();
SetCommand(cmd, cmdText, cmdType, cmdParms);
count = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
conn.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
return count;
}
#endregion
#region 执行不带参数sql语句,返回一个从数据源读取数据的OracleDataReader对象
///
/// 执行不带参数sql语句,返回一个从数据源读取数据的OracleDataReader对象
///
/// 相应的sql语句
/// 返回一个从数据源读取数据的OracleDataReader对象
public static OracleDataReader ExecuteReader(string cmdText)
{
OracleDataReader reader;
try
{
init();
cmd = new OracleCommand(cmdText, conn);
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
return reader;
}
#endregion
#region 执行带参数的sql语句或存储过程,返回一个从数据源读取数据的OracleDataReader对象
///
/// 执行带参数的sql语句或存储过程,返回一个从数据源读取数据的OracleDataReader对象
///
/// sql语句或存储过程名
/// 命令类型
/// 参数集合
/// 返回一个从数据源读取数据的OracleDataReader对象
public static OracleDataReader ExecuteReader(string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
{
OracleDataReader reader;
try
{
init();
cmd = new OracleCommand();
SetCommand(cmd, cmdText, cmdType, cmdParms);
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
return reader;
}
#endregion
#region 执行不带参数sql语句,返回结果集首行首列的值object
///
/// 执行不带参数sql语句,返回结果集首行首列的值object
///
/// 相应的sql语句
/// 返回结果集首行首列的值object
public static object GetSingle(string cmdText)
{
object obj;
try
{
init();
cmd = new OracleCommand(cmdText, conn);
obj = cmd.ExecuteScalar();
conn.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
return obj;
}
#endregion
#region 执行带参数sql语句或存储过程,返回结果集首行首列的值object
///
/// 执行带参数sql语句或存储过程,返回结果集首行首列的值object
///
/// sql语句或存储过程名
/// 命令类型
/// 返回结果集首行首列的值object
///
public static object ExecuteScalar(string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
{
object obj;
try
{
init();
cmd = new OracleCommand();
SetCommand(cmd, cmdText, cmdType, cmdParms);
obj = cmd.ExecuteScalar();
conn.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
return obj;
}
#endregion
}
}