OracleHelper.cs
发布日期:2014-03-08 21:36:57
namespace Smart.DBUtility { using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OracleClient; using System.Configuration; /// <summary> /// Oracle 数据访问 /// </summary> public abstract class OracleHelper { /// <summary> /// 数据库连接字符串 /// </summary> public static string ConnectionString = Smart.Security.Encrypter.Decrypt(ConfigurationManager.AppSettings["ConnectionStrings"], ConfigurationManager.AppSettings["EncryptKey"]); /// <summary> /// Execute a database query which does not include a select /// </summary> /// <param name="connectionString">Connection string to database</param> /// <param name="commandType">Command type either stored procedure or SQL</param> /// <param name="commandText">Acutall SQL Command</param> /// <param name="commandParameters">Parameters to bind to the command</param> /// <returns></returns> public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, 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, commandType, commandText, 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 commandType, string commandText, params OracleParameter[] commandParameters) { OracleCommand cmd = trans.Connection.CreateCommand(); PrepareCommand(cmd, trans.Connection, trans, commandType, commandText, 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(connectionString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24)); /// </remarks> /// <param name="connection">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 commandType, string commandText, params OracleParameter[] commandParameters) { OracleCommand cmd = new OracleCommand(); PrepareCommand(cmd, connection, null, commandType, commandText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } /// <summary> /// 执行非查询操作的重载,增加了是否清除oracle参数的参数字段 /// </summary> /// <param name="command">数据库连接命令对象</param> /// <param name="commandType">命令类型</param> /// <param name="commandText">命令</param> /// <param name="isClearPara">是否清除oracle参数</param> /// <param name="commandParameters">oracle参数</param> /// <returns></returns> public static int ExecuteNonQuery(OracleCommand command, CommandType commandType, string commandText, bool isClearPara, params OracleParameter[] commandParameters) { command.Connection = new OracleConnection(ConnectionString); command.CommandType = commandType; command.CommandText = commandText; if (commandParameters != null) { foreach (OracleParameter parm in commandParameters) { command.Parameters.Add(parm); } } command.Connection.Open(); int val = command.ExecuteNonQuery(); if (isClearPara) { command.Parameters.Clear(); } return val; } /// <summary> /// 执行非查询操作的重载,增加了是否清除oracle参数的参数字段 /// </summary> /// <param name="command">数据库连接命令对象</param> /// <returns></returns> public static int ExecuteNonQuery(ref OracleCommand command) { using (OracleConnection conn = new OracleConnection(ConnectionString)) { command.Connection = conn; command.Connection.Open(); int val = command.ExecuteNonQuery(); return val; } } /// <summary> /// 执行SQL语句操作数据库 /// </summary> /// <param name="commandText">SQL语句</param> /// <param name="commandParameters">参数数组</param> /// <returns></returns> public static int ExecuteNonQuery(string commandText, params OracleParameter[] commandParameters) { using (OracleConnection conn = new OracleConnection(ConnectionString)) { OracleCommand cmd = new OracleCommand(); try { if (conn.State != ConnectionState.Open) { conn.Open(); } cmd = BuildCommand(conn, commandText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); conn.Close(); return val; } catch (System.Data.OracleClient.OracleException ex) { if (conn.State != ConnectionState.Closed) { conn.Close(); } throw new Exception(ex.Message); } finally { if (conn.State != ConnectionState.Closed) { conn.Close(); } cmd.Dispose(); } } } /// <summary> /// 执行SQL语句操作数据库 /// </summary> /// <param name="cmdText">sql语句</param> /// <returns>影响行数</returns> public static int ExecuteNonQuery(string cmdText) { using (OracleConnection conn = new OracleConnection(ConnectionString)) { StringBuilder commandText = new StringBuilder(cmdText); OracleCommand cmd = new OracleCommand(commandText.ToString(), conn); try { if (conn.State != ConnectionState.Open) { conn.Open(); } int val = cmd.ExecuteNonQuery(); conn.Close(); return val; } catch (Exception err) { if (conn.State != ConnectionState.Closed) { conn.Close(); } throw new Exception(err.Message); } } } /// <summary> /// Execute a select query that will return a result set /// </summary> /// <param name="connectionString">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 commandType, string commandText, 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, commandType, commandText, 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> /// 执行Reader.提供从数据源读取数据行的只进流的方法 /// </summary> /// <param name="commandText">SQL文本命令</param> /// <returns>OracleDataReader</returns> public static OracleDataReader ExecuteReader(string commandText) { //Create the command and connection OracleCommand cmd = new OracleCommand(); OracleConnection conn = new OracleConnection(ConnectionString); try { //Prepare the command to execute PrepareCommand(cmd, conn, null, CommandType.Text, commandText, null); //Execute the query, stating that the connection should close when the resulting datareader has been read OracleDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 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> /// 执行查询,并将查询返回的结果集中第一行的第一列作为.Net的数据类型返回。忽略额外的列或行。 /// 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(connectionString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24)); /// </remarks> /// <param name="connectionString">一个有效的连接字符串</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 commandType, string commandText, params OracleParameter[] commandParameters) { OracleCommand cmd = new OracleCommand(); using (OracleConnection conn = new OracleConnection(connectionString)) { PrepareCommand(cmd, conn, null, commandType, commandText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// <summary> /// 执行查询,并将查询返回的结果集中第一行的第一列作为.Net的数据类型返回。忽略额外的列或行。 /// Execute a OracleCommand (that returns a 1x1 resultset) against the specified SqlTransaction /// using the provided parameters. /// </summary> /// <param name="transaction">A valid SqlTransaction</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 SqlParameters from the command object, so they can be used again cmd.Parameters.Clear(); return retval; } /// <summary> /// 执行查询,并将查询返回的结果集中第一行的第一列作为.Net的数据类型返回。忽略额外的列或行。 /// 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="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 connection, CommandType commandType, string commandText, params OracleParameter[] commandParameters) { OracleCommand cmd = new OracleCommand(); PrepareCommand(cmd, connection, null, commandType, commandText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } /// <summary> /// 执行查询,并将查询返回的结果集中第一行的第一列作为.Net的数据类型返回。忽略额外的列或行。 /// </summary> /// <param name="commandType">命令类型</param> /// <param name="commandText">命令文本</param> /// <returns></returns> /// 创建标识:张晋20070508 public static object ExecuteScalar(CommandType commandType, string commandText) { OracleCommand cmd = new OracleCommand(); using (OracleConnection conn = new OracleConnection(ConnectionString)) { PrepareCommand(cmd, conn, null, commandType, commandText, null); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// <summary> /// 执行查询,并将查询返回的结果集中第一行的第一列作为.Net的数据类型返回。忽略额外的列或行。 /// </summary> /// <param name="commandText">sql语句</param> /// <returns></returns> /// 创建标识:张晋20070508 public static Object ExecuteScalar(string commandText) { OracleCommand cmd = new OracleCommand(); using (OracleConnection conn = new OracleConnection(ConnectionString)) { PrepareCommand(cmd, conn, null, CommandType.Text, commandText, null); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// <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="commandType">Command type, e.g. stored procedure</param> /// <param name="commandText">Command test</param> /// <param name="commandParameters">Parameters for the command</param> private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType commandType, string commandText, OracleParameter[] commandParameters) { //Open the connection if required if (conn.State != ConnectionState.Open) conn.Open(); //Set up the command cmd.Connection = conn; cmd.CommandText = commandText; cmd.CommandType = commandType; //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; //} ///// <summary> ///// 执行存储过程 (使用该方法切记要手工关闭SqlDataReader和连接) ///// </summary> ///// <param name="storedProcName">存储过程名</param> ///// <param name="parameters">存储过程参数</param> ///// <returns>SqlDataReader</returns> //public static OracleDataReader RunProcedure(string storedProcName, IDataParameter[] parameters) //{ // OracleConnection connection = new OracleConnection(ConnectionString); // OracleDataReader returnReader; // connection.Open(); // OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters); // command.CommandType = CommandType.StoredProcedure; // returnReader = command.ExecuteReader(); // //Connection.Close(); 不能在此关闭,否则,返回的对象将无法使用 // return returnReader; //} /// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <param name="tableName">DataSet结果中的表名</param> /// <returns>DataSet</returns> public static DataSet RunProcedure(string storedProcName, OracleParameter[] parameters, string tableName) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet, tableName); connection.Close(); return dataSet; } } /// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <returns>DataSet</returns> public static DataSet RunProcedure(string storedProcName, OracleParameter[] parameters) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); connection.Close(); return dataSet; } } /// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">int型输出值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_msg, ref int out_result) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 获取 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="out_msg"></param> /// <param name="out_result"></param> public static void RunProcedureOutValue(string storedProcName, OracleParameter[] parameters, ref string out_msg, ref int out_result, ref int outValue) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmoutvalue"].Value != DBNull.Value) outValue = int.Parse(cmd.Parameters["prmoutvalue"].Value.ToString()); connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 申请充值接口 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="out_msg"></param> /// <param name="out_result"></param> /// <param name="planid"></param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_msg, ref int out_result, ref int planid) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["prmplanid"].Value != DBNull.Value) planid = int.Parse(cmd.Parameters["prmplanid"].Value.ToString()); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个decimal型和一个字符型输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(卡登记) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref int customerID, ref decimal cardNo, ref string id, ref string noUsedate, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmcustomerid"].Value != DBNull.Value) { customerID = int.Parse(cmd.Parameters["prmcustomerid"].Value.ToString()); } if (cmd.Parameters["prmcardno"].Value != DBNull.Value) { cardNo = decimal.Parse(cmd.Parameters["prmcardno"].Value.ToString()); } if (cmd.Parameters["prmid"].Value != DBNull.Value) { id = (String)cmd.Parameters["prmid"].Value; } if (cmd.Parameters["prmnousedate"].Value != DBNull.Value) { noUsedate = (String)cmd.Parameters["prmnousedate"].Value; } connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(发放职员卡) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal cardNo, ref string id, ref DateTime noUsedate, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmcardno"].Value != DBNull.Value) { cardNo = decimal.Parse(cmd.Parameters["prmcardno"].Value.ToString()); } if (cmd.Parameters["prmid"].Value != DBNull.Value) { id = (String)cmd.Parameters["prmid"].Value; } if (cmd.Parameters["prmnousedate"].Value != DBNull.Value) { noUsedate = Convert.ToDateTime(cmd.Parameters["prmnousedate"].Value); } connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(补办功能卡) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal cardNo, ref string id, ref DateTime noUsedate, ref int cardSn, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmcardno"].Value != DBNull.Value) { cardNo = decimal.Parse(cmd.Parameters["prmcardno"].Value.ToString()); } if (cmd.Parameters["prmcardid"].Value != DBNull.Value) { id = (String)cmd.Parameters["prmcardid"].Value; } if (cmd.Parameters["prmnousedate"].Value != DBNull.Value) { noUsedate = Convert.ToDateTime(cmd.Parameters["prmnousedate"].Value); } if (cmd.Parameters["prmcardsn"].Value != DBNull.Value) { cardSn = int.Parse(cmd.Parameters["prmcardsn"].Value.ToString()); } connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(补办普通乘车卡) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="cardNo">输出卡号</param> /// <param name="id">输出发卡流水号</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal cardNo, ref string id, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmcardno"].Value != DBNull.Value) { cardNo = decimal.Parse(cmd.Parameters["prmcardno"].Value.ToString()); } if (cmd.Parameters["prmid"].Value != DBNull.Value) { id = (String)cmd.Parameters["prmid"].Value; } connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string id, ref DateTime noUsedate, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmcardid"].Value != DBNull.Value) { id = (String)cmd.Parameters["prmcardid"].Value; } if (cmd.Parameters["prmcurrenttime"].Value != DBNull.Value) { noUsedate = Convert.ToDateTime(cmd.Parameters["prmcurrenttime"].Value); } connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个数值型输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_result) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(cmd.Parameters["out_result"].Value.ToString()); connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个字符型输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个decimal型、一个字符型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> /// <param name="io_allrec">游标</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_result, ref string out_msg, ref DataSet io_allrec) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); io_allrec = dataSet; if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个string型、一个int型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_msg">输出信息</param> /// <param name="out_result">输入标记</param> /// <param name="io_allrec">游标</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_msg, ref int out_result, ref DataSet io_allrec) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); io_allrec = dataSet; if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个decimal型、一个字符型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_back">decimal型输出数值<</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_back, ref decimal out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); if (oracleDA.SelectCommand.Parameters["out_back"].Value != DBNull.Value) out_back = decimal.Parse(oracleDA.SelectCommand.Parameters["out_back"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { out_msg = ex.ToString(); throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个decimal型、一个字符型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_back">decimal型输出数值<</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_back, ref decimal out_result, ref string out_msg, ref int opcount) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); if (oracleDA.SelectCommand.Parameters["prmopcount"].Value != DBNull.Value) opcount = int.Parse(oracleDA.SelectCommand.Parameters["prmopcount"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_back"].Value != DBNull.Value) out_back = decimal.Parse(oracleDA.SelectCommand.Parameters["out_back"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { out_msg = ex.ToString(); throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个int型、一个字符型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_back">decimal型输出数值</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref int out_back, ref int out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); if (oracleDA.SelectCommand.Parameters["out_back"].Value != DBNull.Value) out_back = int.Parse(oracleDA.SelectCommand.Parameters["out_back"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { out_msg = ex.ToString(); throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个int型、一个字符型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_back">decimal型输出数值<</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="out_msg">输出信息</param> /// <param name="out_cardno">客户卡号</param> /// <param name="out_cardsn">持卡序号</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_cardno, ref int out_cardsn, ref int out_back, ref int out_result, ref string out_msg) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); if (oracleDA.SelectCommand.Parameters["out_back"].Value != DBNull.Value) out_back = int.Parse(oracleDA.SelectCommand.Parameters["out_back"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; if (oracleDA.SelectCommand.Parameters["prmcardno"].Value != DBNull.Value) out_cardno = decimal.Parse(oracleDA.SelectCommand.Parameters["prmcardno"].Value.ToString()); if (oracleDA.SelectCommand.Parameters["out_cardsn"].Value != DBNull.Value) out_cardsn = int.Parse(oracleDA.SelectCommand.Parameters["out_cardsn"].Value.ToString()); connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { out_msg = ex.ToString(); throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个decimal型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_result">decimal型输出数值</param> /// <param name="io_allrec">游标</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref decimal out_result, ref DataSet io_allrec) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); io_allrec = dataSet; if (oracleDA.SelectCommand.Parameters["out_result"].Value != DBNull.Value) out_result = decimal.Parse(oracleDA.SelectCommand.Parameters["out_result"].Value.ToString()); connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程(一个字符型、一个游标输出参数) /// </summary> /// <param name="storedProcName">存储过程名称</param> /// <param name="parameters">参数集</param> /// <param name="out_msg">输出信息</param> /// <param name="io_allrec">游标</param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_msg, ref DataSet io_allrec) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); oracleDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); oracleDA.Fill(dataSet); io_allrec = dataSet; if (oracleDA.SelectCommand.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)oracleDA.SelectCommand.Parameters["out_msg"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { out_msg = ex.ToString(); throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="out_outid"></param> /// <param name="out_opfare"></param> /// <param name="out_bankcardno"></param> /// <param name="out_msg"></param> /// <param name="out_result"></param> /// <param name="out_cardno"></param> /// <param name="out_cardsn"></param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_outid, ref decimal out_opfare, ref string out_bankcardno, ref string out_msg, ref int out_result, ref string out_cardno, ref int out_cardsn) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmoutid"].Value != DBNull.Value) out_outid = (String)cmd.Parameters["prmoutid"].Value; if (cmd.Parameters["prmopfare"].Value != DBNull.Value) out_opfare = (Decimal)cmd.Parameters["prmopfare"].Value; if (cmd.Parameters["prmbankcardno"].Value != DBNull.Value) out_bankcardno = (String)cmd.Parameters["prmbankcardno"].Value; if (cmd.Parameters["prmasn"].Value != DBNull.Value) out_cardno = cmd.Parameters["prmasn"].Value.ToString(); if (cmd.Parameters["prmcardsn"].Value != DBNull.Value) out_cardsn = int.Parse(cmd.Parameters["prmcardsn"].Value.ToString()); connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName"></param> /// <param name="parameters"></param> /// <param name="out_outid"></param> /// <param name="out_msg"></param> /// <param name="out_result"></param> public static void RunProcedure(string storedProcName, OracleParameter[] parameters, ref string out_outid, ref string out_msg, ref int out_result) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters); cmd.ExecuteNonQuery(); if (cmd.Parameters["out_result"].Value != DBNull.Value) out_result = int.Parse(cmd.Parameters["out_result"].Value.ToString()); if (cmd.Parameters["out_msg"].Value != DBNull.Value) out_msg = (String)cmd.Parameters["out_msg"].Value; if (cmd.Parameters["prmcustoutid"].Value != DBNull.Value) out_outid = (String)cmd.Parameters["prmcustoutid"].Value; connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } } } /// <summary> /// 获得记录总数(仅在存储过程分页中使用) /// </summary> /// <param name="sqlCount">查询语句,含排序部分</param> /// <returns></returns> public static int GetPagedRecordsCount(string sqlCount) { string storedProcName = "pkg_page.sp_getrecordcount"; //分页存储过程名称 int recordsCount = 0; using (OracleConnection connection = new OracleConnection(ConnectionString)) { OracleParameter[] para = new OracleParameter[2]; OracleParameter p1 = new OracleParameter(); p1.Direction = ParameterDirection.Input; p1.OracleType = OracleType.VarChar; p1.ParameterName = "p_sqlcount"; p1.Value = sqlCount; p1.Size = 1024; OracleParameter p2 = new OracleParameter(); p2.Direction = ParameterDirection.Output; p2.OracleType = OracleType.Number; p2.ParameterName = "p_outrecordcount"; //p2.Value = 0; para[0] = p1; para[1] = p2; try { connection.Open(); OracleCommand cmd = BuildQueryCommand(connection, storedProcName, para); cmd.ExecuteNonQuery(); if (cmd.Parameters["p_outrecordcount"].Value != DBNull.Value) { recordsCount = int.Parse(cmd.Parameters["p_outrecordcount"].Value.ToString()); } connection.Close(); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } return recordsCount; } } public static DataSet GetPagedRecords(string sql, int pageSize, int pageNO, ref int allRowCount) { string storedProcName = "pkg_page.sp_page"; //分页存储过程名称 using (OracleConnection connection = new OracleConnection(ConnectionString)) { OracleParameter[] para = new OracleParameter[5]; OracleParameter p1 = new OracleParameter(); OracleParameter p2 = new OracleParameter(); OracleParameter p3 = new OracleParameter(); OracleParameter p4 = new OracleParameter(); OracleParameter p5 = new OracleParameter(); p1.Direction = ParameterDirection.Input; p1.OracleType = OracleType.Number; p1.ParameterName = "p_pagesize"; p1.Value = pageSize; p2.Direction = ParameterDirection.Input; p2.OracleType = OracleType.Number; p2.ParameterName = "p_pageno"; p2.Value = pageNO; p3.Direction = ParameterDirection.Input; p3.OracleType = OracleType.VarChar; p3.ParameterName = "p_sqlselect"; p3.Value = sql; p3.Size = 2048; p5.Direction = ParameterDirection.Output; p5.OracleType = OracleType.Int32; p5.ParameterName = "p_outrecordcount"; p4.Direction = ParameterDirection.Output; p4.OracleType = OracleType.Cursor; p4.ParameterName = "p_outcursor"; para[0] = p1; para[1] = p2; para[2] = p3; para[3] = p5; para[4] = p4; DataSet dstemp = OracleHelper.RunProcedure(storedProcName, para); allRowCount = Convert.ToInt32(p5.Value); return dstemp; } } /// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="sqlString">查询语句</param> /// <returns>DataSet</returns> public static DataSet Query(string sqlString) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { DataSet ds = new DataSet(); try { connection.Open(); OracleDataAdapter command = new OracleDataAdapter(sqlString, connection); command.Fill(ds); } catch (System.Data.OracleClient.OracleException ex) { throw new Exception(ex.Message); } return ds; } } /// <summary> /// 执行查询语句,返回DataTable /// </summary> /// <param name="commandType">执行类型</param> /// <param name="commandText">语句</param> /// <param name="commandParameters">参数</param> /// <returns></returns> public static DataTable Query(CommandType commandType, string commandText, params OracleParameter[] commandParameters) { using (OracleConnection connection = new OracleConnection(ConnectionString)) { DataTable tempTable = new DataTable(); connection.Open(); OracleDataAdapter oracleDA = new OracleDataAdapter(); if (commandType == CommandType.Text) { oracleDA.SelectCommand = BuildCommand(connection, commandText, commandParameters); } else { oracleDA.SelectCommand = BuildQueryCommand(connection, commandText, commandParameters); } oracleDA.Fill(tempTable); connection.Close(); return tempTable; } } /// <summary> /// 构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值) /// </summary> /// <param name="connection">数据库连接</param> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <returns>OracleCommand</returns> private static OracleCommand BuildQueryCommand(OracleConnection connection, string storedProcName, OracleParameter[] parameters) { OracleCommand command = new OracleCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; foreach (OracleParameter parameter in parameters) { if (parameter != null) { // 检查未分配值的输出参数,将其分配以DBNull.Value. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } command.Parameters.Add(parameter); } } return command; } /// <summary> /// 构建 OracleCommand 对象 /// </summary> /// <param name="connection">OracleConnection对象</param> /// <param name="sqlStr">sql语句</param> /// <param name="parameters">OracleParameter参数对象</param> /// <returns>OracleCommand对象</returns> private static OracleCommand BuildCommand(OracleConnection connection, string sqlStr, OracleParameter[] parameters) { OracleCommand command = new OracleCommand(sqlStr, connection); command.CommandType = CommandType.Text; if (parameters != null) { foreach (OracleParameter parameter in parameters) { if (parameter != null) { // 检查未分配值的输出参数,将其分配以DBNull.Value. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } command.Parameters.Add(parameter); } } } return command; } /// <summary> /// 通过命令类型、命令和参数组执行费查询操作 /// </summary> /// <param name="commandType"></param> /// <param name="commandText"></param> /// <param name="commandParameters"></param> /// <returns></returns> public static int ExecuteNonQuery(CommandType commandType, string commandText, 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, commandType, commandText, commandParameters); //Execute the command int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } } }