| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Configuration;
- using System.Collections;
- using System.Data.OracleClient;
- using System.Data;
- namespace XYFDRQ.DBUtility
- {
- /// <summary>
- /// A helper class used to execute queries against an Oracle database
- /// </summary>
- public abstract class OracleHelper
- {
- // Read the connection strings from the configuration file
- public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["OraConnString1"].ConnectionString;
- public static readonly string ConnectionStringInventoryDistributedTransaction = ConfigurationManager.ConnectionStrings["OraConnString2"].ConnectionString;
- public static readonly string ConnectionStringOrderDistributedTransaction = ConfigurationManager.ConnectionStrings["OraConnString3"].ConnectionString;
- public static readonly string ConnectionStringProfile = ConfigurationManager.ConnectionStrings["OraProfileConnString"].ConnectionString;
- public static readonly string ConnectionStringMembership = ConfigurationManager.ConnectionStrings["OraMembershipConnString"].ConnectionString;
- //Create a hashtable for the parameter cached
- private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
- /// <summary>
- /// Execute a database query which does not include a select
- /// </summary>
- /// <param name="connString">Connection string to database</param>
- /// <param name="cmdType">Command type either stored procedure or SQL</param>
- /// <param name="cmdText">Acutall SQL Command</param>
- /// <param name="commandParameters">Parameters to bind to the command</param>
- /// <returns></returns>
- public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
- {
- // Create a new Oracle command
- OracleCommand cmd = new OracleCommand();
- //Create a connection
- using (OracleConnection connection = new OracleConnection(connectionString))
- {
- //Prepare the command
- PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
- //Execute the command
- int val = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- return val;
- }
- }
- /// <summary>
- /// Execute an OracleCommand (that returns no resultset) against an existing database transaction
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));
- /// </remarks>
- /// <param name="trans">an existing database transaction</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or PL/SQL command</param>
- /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>
- /// <returns>an int representing the number of rows affected by the command</returns>
- public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
- {
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
- int val = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- return val;
- }
- /// <summary>
- /// Execute an OracleCommand (that returns no resultset) against an existing database connection
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));
- /// </remarks>
- /// <param name="conn">an existing database connection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or PL/SQL command</param>
- /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>
- /// <returns>an int representing the number of rows affected by the command</returns>
- public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
- {
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
- int val = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- return val;
- }
- /// <summary>
- /// Execute a select query that will return a result set
- /// </summary>
- /// <param name="connString">Connection string</param>
- //// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or PL/SQL command</param>
- /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>
- /// <returns></returns>
- public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
- {
- //Create the command and connection
- OracleCommand cmd = new OracleCommand();
- OracleConnection conn = new OracleConnection(connectionString);
- try
- {
- //Prepare the command to execute
- PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
- //Execute the query, stating that the connection should close when the resulting datareader has been read
- OracleDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- cmd.Parameters.Clear();
- return rdr;
- }
- catch
- {
- //If an error occurs close the connection as the reader will not be used and we expect it to close the connection
- conn.Close();
- throw;
- }
- }
- /// <summary>
- /// Execute an OracleCommand that returns the first column of the first record against the database specified in the connection string
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));
- /// </remarks>
- /// <param name="connectionString">a valid connection string for a OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or PL/SQL command</param>
- /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>
- /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
- public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
- {
- OracleCommand cmd = new OracleCommand();
- using (OracleConnection conn = new OracleConnection(connectionString))
- {
- PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
- object val = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- return val;
- }
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a 1x1 resultset) against the specified OracleTransaction
- /// using the provided parameters.
- /// </summary>
- /// <param name="transaction">A valid OracleTransaction</param>
- /// <param name="commandType">The CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">The stored procedure name or PL/SQL command</param>
- /// <param name="commandParameters">An array of OracleParamters used to execute the command</param>
- /// <returns>An object containing the value in the 1x1 resultset generated by the command</returns>
- public static object ExecuteScalar(OracleTransaction transaction, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- if (transaction == null)
- throw new ArgumentNullException("transaction");
- if (transaction != null && transaction.Connection == null)
- throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");
- // Create a command and prepare it for execution
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
- // Execute the command & return the results
- object retval = cmd.ExecuteScalar();
- // Detach the OracleParameters from the command object, so they can be used again
- cmd.Parameters.Clear();
- return retval;
- }
- /// <summary>
- /// Execute an OracleCommand that returns the first column of the first record against an existing database connection
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// Object obj = ExecuteScalar(conn, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));
- /// </remarks>
- /// <param name="conn">an existing database connection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or PL/SQL command</param>
- /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>
- /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
- public static object ExecuteScalar(OracleConnection connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
- {
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters);
- object val = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- return val;
- }
- /// <summary>
- /// Add a set of parameters to the cached
- /// </summary>
- /// <param name="cacheKey">Key value to look up the parameters</param>
- /// <param name="commandParameters">Actual parameters to cached</param>
- public static void CacheParameters(string cacheKey, params OracleParameter[] commandParameters)
- {
- parmCache[cacheKey] = commandParameters;
- }
- /// <summary>
- /// Fetch parameters from the cache
- /// </summary>
- /// <param name="cacheKey">Key to look up the parameters</param>
- /// <returns></returns>
- public static OracleParameter[] GetCachedParameters(string cacheKey)
- {
- OracleParameter[] cachedParms = (OracleParameter[])parmCache[cacheKey];
- if (cachedParms == null)
- return null;
- // If the parameters are in the cache
- OracleParameter[] clonedParms = new OracleParameter[cachedParms.Length];
- // return a copy of the parameters
- for (int i = 0, j = cachedParms.Length; i < j; i++)
- clonedParms[i] = (OracleParameter)((ICloneable)cachedParms[i]).Clone();
- return clonedParms;
- }
- /// <summary>
- /// Internal function to prepare a command for execution by the database
- /// </summary>
- /// <param name="cmd">Existing command object</param>
- /// <param name="conn">Database connection object</param>
- /// <param name="trans">Optional transaction object</param>
- /// <param name="cmdType">Command type, e.g. stored procedure</param>
- /// <param name="cmdText">Command test</param>
- /// <param name="commandParameters">Parameters for the command</param>
- private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] commandParameters)
- {
- //Open the connection if required
- if (conn.State != ConnectionState.Open)
- conn.Open();
- //Set up the command
- cmd.Connection = conn;
- cmd.CommandText = cmdText;
- cmd.CommandType = cmdType;
- //Bind it to the transaction if it exists
- if (trans != null)
- cmd.Transaction = trans;
- // Bind the parameters passed in
- if (commandParameters != null)
- {
- foreach (OracleParameter parm in commandParameters)
- cmd.Parameters.Add(parm);
- }
- }
- /// <summary>
- /// Converter to use boolean data type with Oracle
- /// </summary>
- /// <param name="value">Value to convert</param>
- /// <returns></returns>
- public static string OraBit(bool value)
- {
- if (value)
- return "Y";
- else
- return "N";
- }
- /// <summary>
- /// Converter to use boolean data type with Oracle
- /// </summary>
- /// <param name="value">Value to convert</param>
- /// <returns></returns>
- public static bool OraBool(string value)
- {
- if (value.Equals("Y"))
- return true;
- else
- return false;
- }
- #region ExecuteDataSet
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset and takes no parameters) against the database specified in
- /// the connection string.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders");
- /// </remarks>
- /// <param name="connectionString">a valid connection string for a OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <returns>a dataset containing the resultset generated by the command</returns>
- public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText)
- {
- //pass through the call providing null for the set of OracleParameters
- return ExecuteDataset(connectionString, commandType, commandText, (OracleParameter[])null);
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset) against the database specified in the connection string
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders", new OracleParameter("@prodid", 24));
- /// </remarks>
- /// <param name="connectionString">a valid connection string for a OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
- /// <returns>a dataset containing the resultset generated by the command</returns>
- public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- //create & open a OracleConnection, and dispose of it after we are done.
- using (OracleConnection cn = new OracleConnection(connectionString))
- {
- cn.Open();
- //call the overload that takes a connection in place of the connection string
- DataSet ds = ExecuteDataset(cn, commandType, commandText, commandParameters);
- cn.Close();
- cn.Dispose();
- return ds;
- }
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset and takes no parameters) against the provided OracleConnection.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders");
- /// </remarks>
- /// <param name="connection">a valid OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <returns>a dataset containing the resultset generated by the command</returns>
- public static DataSet ExecuteDataset(OracleConnection connection, CommandType commandType, string commandText)
- {
- //pass through the call providing null for the set of OracleParameters
- return ExecuteDataset(connection, commandType, commandText, (OracleParameter[])null);
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset) against the specified OracleConnection
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new OracleParameter("@prodid", 24));
- /// </remarks>
- /// <param name="connection">a valid OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
- /// <returns>a dataset containing the resultset generated by the command</returns>
- public static DataSet ExecuteDataset(OracleConnection connection, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- //create a command and prepare it for execution
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, connection, (OracleTransaction)null, commandType, commandText, commandParameters);
- //create the DataAdapter & DataSet
- OracleDataAdapter da = new OracleDataAdapter(cmd);
- DataSet ds = new DataSet();
- //fill the DataSet using default values for DataTable names, etc.
- da.Fill(ds);
- // detach the OracleParameters from the command object, so they can be used again.
- cmd.Parameters.Clear();
- connection.Close();
- connection.Dispose();
- //return the dataset
- return ds;
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset and takes no parameters) against the provided OracleTransaction.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders");
- /// </remarks>
- /// <param name="transaction">a valid OracleTransaction</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <returns>a dataset containing the resultset generated by the command</returns>
- public static DataSet ExecuteDataset(OracleTransaction transaction, CommandType commandType, string commandText)
- {
- //pass through the call providing null for the set of OracleParameters
- return ExecuteDataset(transaction, commandType, commandText, (OracleParameter[])null);
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset) against the specified OracleTransaction
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders", new OracleParameter("@prodid", 24));
- /// </remarks>
- /// <param name="transaction">a valid OracleTransaction</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
- /// <returns>a dataset containing the resultset generated by the command</returns>
- public static DataSet ExecuteDataset(OracleTransaction transaction, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- //create a command and prepare it for execution
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
- //create the DataAdapter & DataSet
- OracleDataAdapter da = new OracleDataAdapter(cmd);
- DataSet ds = new DataSet();
- //fill the DataSet using default values for DataTable names, etc.
- da.Fill(ds);
- // detach the OracleParameters from the command object, so they can be used again.
- cmd.Parameters.Clear();
- //return the dataset
- return ds;
- }
- #endregion ExecuteDataSet
- #region ExecuteDataTable
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset and takes no parameters) against the database specified in
- /// the connection string.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataTable dt = ExecuteDataTable(connString, CommandType.StoredProcedure, "GetOrders");
- /// </remarks>
- /// <param name="connectionString">a valid connection string for a OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <returns>a DataTable containing the resultset generated by the command</returns>
- public static DataTable ExecuteDataTable(string connectionString, CommandType commandType, string commandText)
- {
- //pass through the call providing null for the set of OracleParameters
- return ExecuteDataTable(connectionString, commandType, commandText, (OracleParameter[])null);
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset) against the database specified in the connection string
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataTable dt = ExecuteDataTable(connString, CommandType.StoredProcedure, "GetOrders", new OracleParameter("@prodid", 24));
- /// </remarks>
- /// <param name="connectionString">a valid connection string for a OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
- /// <returns>a DataTable containing the resultset generated by the command</returns>
- public static DataTable ExecuteDataTable(string connectionString, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- //create & open a OracleConnection, and dispose of it after we are done.
- using (OracleConnection cn = new OracleConnection(connectionString))
- {
- cn.Open();
- //call the overload that takes a connection in place of the connection string
- DataTable dt = ExecuteDataTable(cn, commandType, commandText, commandParameters);
- cn.Close();
- cn.Dispose();
- return dt;
- }
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset and takes no parameters) against the provided OracleConnection.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataTable dt = ExecuteDataTable(conn, CommandType.StoredProcedure, "GetOrders");
- /// </remarks>
- /// <param name="connection">a valid OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <returns>a DataTable containing the resultset generated by the command</returns>
- public static DataTable ExecuteDataTable(OracleConnection connection, CommandType commandType, string commandText)
- {
- //pass through the call providing null for the set of OracleParameters
- return ExecuteDataTable(connection, commandType, commandText, (OracleParameter[])null);
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset) against the specified OracleConnection
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataTable dt = ExecuteDataTable(conn, CommandType.StoredProcedure, "GetOrders", new OracleParameter("@prodid", 24));
- /// </remarks>
- /// <param name="connection">a valid OracleConnection</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
- /// <returns>a DataTable containing the resultset generated by the command</returns>
- public static DataTable ExecuteDataTable(OracleConnection connection, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- //create a command and prepare it for execution
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, connection, (OracleTransaction)null, commandType, commandText, commandParameters);
- //create the DataAdapter & DataTable
- OracleDataAdapter da = new OracleDataAdapter(cmd);
- DataTable dt = new DataTable();
- //fill the DataTable using default values for DataTable names, etc.
- da.Fill(dt);
- // detach the OracleParameters from the command object, so they can be used again.
- cmd.Parameters.Clear();
- connection.Close();
- connection.Dispose();
- //return the DataTable
- return dt;
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset and takes no parameters) against the provided OracleTransaction.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataTable dt = ExecuteDataTable(trans, CommandType.StoredProcedure, "GetOrders");
- /// </remarks>
- /// <param name="transaction">a valid OracleTransaction</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <returns>a DataTable containing the resultset generated by the command</returns>
- public static DataTable ExecuteDataTable(OracleTransaction transaction, CommandType commandType, string commandText)
- {
- //pass through the call providing null for the set of OracleParameters
- return ExecuteDataTable(transaction, commandType, commandText, (OracleParameter[])null);
- }
- /// <summary>
- /// Execute a OracleCommand (that returns a resultset) against the specified OracleTransaction
- /// using the provided parameters.
- /// </summary>
- /// <remarks>
- /// e.g.:
- /// DataTable dt = ExecuteDataTable(trans, CommandType.StoredProcedure, "GetOrders", new OracleParameter("@prodid", 24));
- /// </remarks>
- /// <param name="transaction">a valid OracleTransaction</param>
- /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
- /// <param name="commandText">the stored procedure name or T-SQL command</param>
- /// <param name="commandParameters">an array of SqlParamters used to execute the command</param>
- /// <returns>a DataTable containing the resultset generated by the command</returns>
- public static DataTable ExecuteDataTable(OracleTransaction transaction, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
- {
- //create a command and prepare it for execution
- OracleCommand cmd = new OracleCommand();
- PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
- //create the DataAdapter & DataTable
- OracleDataAdapter da = new OracleDataAdapter(cmd);
- DataTable dt = new DataTable();
- //fill the DataTable using default values for DataTable names, etc.
- da.Fill(dt);
- // detach the OracleParameters from the command object, so they can be used again.
- cmd.Parameters.Clear();
- //return the DataTable
- return dt;
- }
- #endregion ExecuteDataTable
- }
- }
|