/// <summary>/// MySqlHelper 的摘要说明。/// </summary>public class MySqlHelper{public static string connectionString = ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString;#region private utility methods & constructors//Since this class provides only static methods, make the default constructor private to prevent //instances from being created with "new SqlHelper()".private SqlHelper(){}/// <summary>/// This method is used to attach array of SqlParameters to a SqlCommand./// /// This method will assign a value of DbNull to any parameter with a direction of/// InputOutput and a value of null.  /// /// This behavior will prevent default values from being used, but/// this will be the less common case than an intended pure output parameter (derived as InputOutput)/// where the user provided no input value./// </summary>/// <param name="command">The command to which the parameters will be added</param>/// <param name="commandParameters">an array of SqlParameters tho be added to command</param>private static void AttachParameters(MySqlCommand command, MySqlParameter[] commandParameters){try{foreach (MySqlParameter p in commandParameters){//check for derived output value with no value assignedif ((p.Direction == ParameterDirection.InputOutput) && (p.Value == null)){p.Value = DBNull.Value;}else{if (p.Value == null){p.Value = DBNull.Value;}}command.Parameters.Add(p);}}catch (Exception ex){Utils.WriteLogFile(ex.Message.ToString(), "异常日志");}}/// <summary>/// This method assigns an array of values to an array of SqlParameters./// </summary>/// <param name="commandParameters">array of SqlParameters to be assigned values</param>/// <param name="parameterValues">array of Components holding the values to be assigned</param>private static void AssignParameterValues(MySqlParameter[] commandParameters, object[] parameterValues){try{if ((commandParameters == null) || (parameterValues == null)){//do nothing if we get no datareturn;}// we must have the same number of values as we pave parameters to put them inif (commandParameters.Length != parameterValues.Length){throw new ArgumentException("Parameter count does not match Parameter Value count.");}//iterate through the SqlParameters, assigning the values from the corresponding position in the //value arrayfor (int i = 0, j = commandParameters.Length; i < j; i++){commandParameters[i].Value = parameterValues[i];}}catch (Exception ex){Utils.WriteLogFile(ex.Message.ToString(), "异常日志");}}/// <summary>/// This method opens (if necessary) and assigns a connection, transaction, command type and parameters /// to the provided command./// </summary>/// <param name="command">the SqlCommand to be prepared</param>/// <param name="connection">a valid SqlConnection, on which to execute this command</param>/// <param name="transaction">a valid SqlTransaction, or 'null'</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 SqlParameters to be associated with the command or 'null' if no parameters are required</param>private static void PrepareCommand(MySqlCommand command, MySqlConnection connection, MySqlTransaction transaction,CommandType commandType, string commandText, MySqlParameter[] commandParameters){try{//if the provided connection is not open, we will open itif (connection.State != ConnectionState.Open){connection.Open();}//associate the connection with the commandcommand.Connection = connection;//set the command text (stored procedure name or SQL statement)command.CommandText = commandText;//if we were provided a transaction, assign it.if (transaction != null){command.Transaction = transaction;}//set the command typecommand.CommandType = commandType;//attach the command parameters if they are providedif (commandParameters != null){AttachParameters(command, commandParameters);}}catch (Exception ex){Utils.WriteLogFile(ex.Message.ToString(), "异常日志");}return;}#endregion private utility methods & constructors#region DataHelperspublic static string CheckNull(object obj){return (string)obj;}public static string CheckNull(DBNull obj){return null;}#endregion#region AddParameterspublic static object CheckForNullString(string text){if (text == null || text.Trim().Length == 0){return System.DBNull.Value;}else{return text;}}public static MySqlParameter MakeInParam(string ParamName, object Value){return new MySqlParameter(ParamName, Value);}/// <summary>/// Make input param./// </summary>/// <param name="ParamName">Name of param.</param>/// <param name="DbType">Param type.</param>/// <param name="Size">Param size.</param>/// <param name="Value">Param value.</param>/// <returns>New parameter.</returns>public static MySqlParameter MakeInParam(string ParamName, MySqlDbType DbType, int Size, object Value){return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);}/// <summary>/// Make input param./// </summary>/// <param name="ParamName">Name of param.</param>/// <param name="DbType">Param type.</param>/// <param name="Size">Param size.</param>/// <returns>New parameter.</returns>public static MySqlParameter MakeOutParam(string ParamName, MySqlDbType DbType, int Size){return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);}/// <summary>/// Make stored procedure param./// </summary>/// <param name="ParamName">Name of param.</param>/// <param name="DbType">Param type.</param>/// <param name="Size">Param size.</param>/// <param name="Direction">Parm direction.</param>/// <param name="Value">Param value.</param>/// <returns>New parameter.</returns>public static MySqlParameter MakeParam(string ParamName, MySqlDbType DbType, Int32 Size,ParameterDirection Direction, object Value){MySqlParameter param;if (Size > 0)param = new MySqlParameter(ParamName, DbType, Size);elseparam = new MySqlParameter(ParamName, DbType);param.Direction = Direction;if (!(Direction == ParameterDirection.Output && Value == null))param.Value = Value;return param;}#endregion#region ExecuteNonQuery/// <summary>/// Execute a SqlCommand (that returns no resultset and takes no parameters) against the database specified in /// the connection string. /// </summary>/// <remarks>/// e.g.:  ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders");/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</param>/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>/// <param name="commandText">the stored procedure name or T-SQL command</param>/// <returns>an int representing the number of rows affected by the command</returns>public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteNonQuery(connectionString, commandType, commandText, (MySqlParameter[])null);}public static int ExecuteNonQuery(CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//pass through the call providing null for the set of SqlParametersreturn ExecuteNonQuery(connectionString, commandType, commandText, commandParameters);}/// <summary>/// Execute a SqlCommand (that returns no resultset) against the database specified in the connection string /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</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>an int representing the number of rows affected by the command</returns>public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//create & open a SqlConnection, and dispose of it after we are done.using (MySqlConnection cn = new MySqlConnection(connectionString)){cn.Open();//call the overload that takes a connection in place of the connection stringreturn ExecuteNonQuery(cn, commandType, commandText, commandParameters);}}/// <summary>/// Execute a SqlCommand (that returns no resultset and takes no parameters) against the provided SqlConnection. /// </summary>/// <remarks>/// e.g.:  ///  int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders");/// </remarks>/// <param name="connection">a valid SqlConnection</param>/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>/// <param name="commandText">the stored procedure name or T-SQL command</param>/// <returns>an int representing the number of rows affected by the command</returns>public static int ExecuteNonQuery(MySqlConnection connection, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteNonQuery(connection, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns no resultset) against the specified SqlConnection /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connection">a valid SqlConnection</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>an int representing the number of rows affected by the command</returns>public static int ExecuteNonQuery(MySqlConnection connection, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){MySqlTransaction sqltran;sqltran = connection.BeginTransaction();int retval = -1;try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, connection, sqltran, commandType, commandText, commandParameters);//cmd.CommandTimeout = 5;//finally, execute the command.retval = cmd.ExecuteNonQuery();sqltran.Commit();// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();}catch (Exception ex){try{sqltran.Rollback();}catch (Exception e){}string str = string.Empty;for (int i = 0; i < commandParameters.Length - 1; i++){str += commandParameters[i].ParameterName + "=" + commandParameters[i].Value.ToString() + ",";}Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString() + "参数值为:" + str, "异常日志");retval = -1;}finally{connection.Close();}return retval;}/// <summary>/// Execute a SqlCommand (that returns no resultset and takes no parameters) against the provided SqlTransaction. /// </summary>/// <remarks>/// e.g.:  ///  int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders");/// </remarks>/// <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 T-SQL command</param>/// <returns>an int representing the number of rows affected by the command</returns>public static int ExecuteNonQuery(MySqlTransaction transaction, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteNonQuery(transaction, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns no resultset) against the specified SqlTransaction/// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <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 T-SQL command</param>/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>/// <returns>an int representing the number of rows affected by the command</returns>public static int ExecuteNonQuery(MySqlTransaction transaction, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);//cmd.CommandTimeout = 5;//finally, execute the command.int retval = cmd.ExecuteNonQuery();// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();return retval;}catch (Exception ex){string str = string.Empty;if (commandParameters != null){for (int i = 0; i < commandParameters.Length - 1; i++){str += commandParameters[i].ParameterName + "=" + commandParameters[i].Value.ToString() + ",";}}Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString() + "参数值为:" + str, "异常日志");return -1;}finally{//transaction.Connection.Close();}}#endregion ExecuteNonQuery#region ExecuteDataSetpublic static DataSet ExecuteDataset(CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//pass through the call providing null for the set of SqlParametersreturn ExecuteDataset(connectionString, commandType, commandText, commandParameters);}/// <summary>/// Execute a SqlCommand (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 SqlConnection</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 SqlParametersreturn ExecuteDataset(connectionString, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (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 SqlParameter("?prodid", 24));/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</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 MySqlParameter[] commandParameters){//create & open a SqlConnection, and dispose of it after we are done.using (MySqlConnection cn = new MySqlConnection(connectionString)){cn.Open();//call the overload that takes a connection in place of the connection stringreturn ExecuteDataset(cn, commandType, commandText, commandParameters);}}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlConnection. /// </summary>/// <remarks>/// e.g.:  ///  DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <param name="connection">a valid SqlConnection</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(MySqlConnection connection, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteDataset(connection, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the specified SqlConnection /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connection">a valid SqlConnection</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(MySqlConnection connection, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, connection, (MySqlTransaction)null, commandType, commandText, commandParameters);//create the DataAdapter & DataSetMySqlDataAdapter da = new MySqlDataAdapter(cmd);DataSet ds = new DataSet();//fill the DataSet using default values for DataTable names, etc.da.Fill(ds);// detach the SqlParameters from the command object, so they can be used again.          cmd.Parameters.Clear();//return the datasetreturn ds;}catch (Exception ex){Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}finally{connection.Close();}return null;}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlTransaction. /// </summary>/// <remarks>/// e.g.:  ///  DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <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 T-SQL command</param>/// <returns>a dataset containing the resultset generated by the command</returns>public static DataSet ExecuteDataset(MySqlTransaction transaction, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteDataset(transaction, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the specified SqlTransaction/// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <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 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(MySqlTransaction transaction, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);//create the DataAdapter & DataSetMySqlDataAdapter da = new MySqlDataAdapter(cmd);DataSet ds = new DataSet();//fill the DataSet using default values for DataTable names, etc.da.Fill(ds);// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();//return the datasetreturn ds;}catch (Exception ex){transaction.Connection.Close();Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}return null;}#endregion ExecuteDataSet#region ExecuteDataTablepublic static DataTable ExecuteDataTable(CommandType commandType, string commandText){return ExecuteDataTable(connectionString, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (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 SqlConnection</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 SqlParametersreturn ExecuteDataTable(connectionString, commandType, commandText, (MySqlParameter[])null);}public static DataTable ExecuteDataTable(CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//create & open a SqlConnection, and dispose of it after we are done.using (MySqlConnection cn = new MySqlConnection(connectionString)){cn.Open();//call the overload that takes a connection in place of the connection stringreturn ExecuteDataTable(cn, commandType, commandText, commandParameters);}}/// <summary>/// Execute a SqlCommand (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 SqlParameter("?prodid", 24));/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</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 MySqlParameter[] commandParameters){//create & open a SqlConnection, and dispose of it after we are done.using (MySqlConnection cn = new MySqlConnection(connectionString)){cn.Open();//call the overload that takes a connection in place of the connection stringreturn ExecuteDataTable(cn, commandType, commandText, commandParameters);}}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlConnection. /// </summary>/// <remarks>/// e.g.:  ///  DataTable dt = ExecuteDataTable(conn, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <param name="connection">a valid SqlConnection</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(MySqlConnection connection, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteDataTable(connection, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the specified SqlConnection /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  DataTable dt = ExecuteDataTable(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connection">a valid SqlConnection</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(MySqlConnection connection, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();cmd.CommandTimeout = 140;PrepareCommand(cmd, connection, (MySqlTransaction)null, commandType, commandText, commandParameters);//create the DataAdapter & DataTableMySqlDataAdapter da = new MySqlDataAdapter(cmd);DataTable dt = new DataTable();//fill the DataTable using default values for DataTable names, etc.da.Fill(dt);// detach the SqlParameters from the command object, so they can be used again.           cmd.Parameters.Clear();return dt;}catch (Exception ex){Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}finally{connection.Close();}return null;}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlTransaction. /// </summary>/// <remarks>/// e.g.:  ///  DataTable dt = ExecuteDataTable(trans, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <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 T-SQL command</param>/// <returns>a DataTable containing the resultset generated by the command</returns>public static DataTable ExecuteDataTable(MySqlTransaction transaction, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteDataTable(transaction, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the specified SqlTransaction/// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  DataTable dt = ExecuteDataTable(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <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 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(MySqlTransaction transaction, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();cmd.CommandTimeout = 140;PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);//create the DataAdapter & DataTableMySqlDataAdapter da = new MySqlDataAdapter(cmd);DataTable dt = new DataTable();//fill the DataTable using default values for DataTable names, etc.da.Fill(dt);// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();//return the DataTablereturn dt;}catch (Exception ex){transaction.Connection.Close();Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}return null;}#endregion ExecuteDataTable#region ExecuteReader/// <summary>/// this enum is used to indicate whether the connection was provided by the caller, or created by SqlHelper, so that/// we can set the appropriate CommandBehavior when calling ExecuteReader()/// </summary>private enum SqlConnectionOwnership{/// <summary>Connection is owned and managed by SqlHelper</summary>Internal,/// <summary>Connection is owned and managed by the caller</summary>External}/// <summary>/// Create and prepare a SqlCommand, and call ExecuteReader with the appropriate CommandBehavior./// </summary>/// <remarks>/// If we created and opened the connection, we want the connection to be closed when the DataReader is closed./// /// If the caller provided the connection, we want to leave it to them to manage./// </remarks>/// <param name="connection">a valid SqlConnection, on which to execute this command</param>/// <param name="transaction">a valid SqlTransaction, or 'null'</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 SqlParameters to be associated with the command or 'null' if no parameters are required</param>/// <param name="connectionOwnership">indicates whether the connection parameter was provided by the caller, or created by SqlHelper</param>/// <returns>SqlDataReader containing the results of the command</returns>private static MySqlDataReader ExecuteReader(MySqlConnection connection, MySqlTransaction transaction,CommandType commandType, string commandText,MySqlParameter[] commandParameters,SqlConnectionOwnership connectionOwnership){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters);//create a readerMySqlDataReader dr;// call ExecuteReader with the appropriate CommandBehaviorif (connectionOwnership == SqlConnectionOwnership.External){dr = cmd.ExecuteReader();}else{dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);}// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();return dr;}catch (Exception ex){connection.Close();Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}return null;}public static MySqlDataReader ExecuteReader(CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteReader(connectionString, commandType, commandText, (MySqlParameter[])null);}public static MySqlDataReader ExecuteReader(CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//pass through the call providing null for the set of SqlParametersreturn ExecuteReader(connectionString, commandType, commandText, commandParameters);}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the database specified in /// the connection string. /// </summary>/// <remarks>/// e.g.:  ///  SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</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 SqlDataReader containing the resultset generated by the command</returns>public static MySqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteReader(connectionString, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the database specified in the connection string /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</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 SqlDataReader containing the resultset generated by the command</returns>public static MySqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//create & open a SqlConnectionMySqlConnection cn = new MySqlConnection(connectionString);cn.Open();try{//call the private overload that takes an internally owned connection in place of the connection stringreturn ExecuteReader(cn, null, commandType, commandText, commandParameters,SqlConnectionOwnership.Internal);}catch{//if we fail to return the SqlDatReader, we need to close the connection ourselvescn.Close();throw;}}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlConnection. /// </summary>/// <remarks>/// e.g.:  ///  SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <param name="connection">a valid SqlConnection</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 SqlDataReader containing the resultset generated by the command</returns>public static MySqlDataReader ExecuteReader(MySqlConnection connection, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteReader(connection, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the specified SqlConnection /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connection">a valid SqlConnection</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 SqlDataReader containing the resultset generated by the command</returns>public static MySqlDataReader ExecuteReader(MySqlConnection connection, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//pass through the call to the private overload using a null transaction value and an externally owned connectionreturn ExecuteReader(connection, (MySqlTransaction)null, commandType, commandText, commandParameters,SqlConnectionOwnership.External);}/// <summary>/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlTransaction. /// </summary>/// <remarks>/// e.g.:  ///  SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders");/// </remarks>/// <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 T-SQL command</param>/// <returns>a SqlDataReader containing the resultset generated by the command</returns>public static MySqlDataReader ExecuteReader(MySqlTransaction transaction, CommandType commandType,string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteReader(transaction, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a resultset) against the specified SqlTransaction/// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///   SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));/// </remarks>/// <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 T-SQL command</param>/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>/// <returns>a SqlDataReader containing the resultset generated by the command</returns>public static MySqlDataReader ExecuteReader(MySqlTransaction transaction, CommandType commandType,string commandText, params MySqlParameter[] commandParameters){//pass through to private overload, indicating that the connection is owned by the callerreturn ExecuteReader(transaction.Connection, transaction, commandType, commandText, commandParameters,SqlConnectionOwnership.External);}#endregion ExecuteReader#region ExecuteScalar/// <summary>/// Execute a SqlCommand (that returns a 1x1 resultset and takes no parameters) against the database specified in /// the connection string. /// </summary>/// <remarks>/// e.g.:  ///  int orderCount = (int)ExecuteScalar(connString, CommandType.StoredProcedure, "GetOrderCount");/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</param>/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>/// <param name="commandText">the stored procedure name or T-SQL command</param>/// <returns>an object containing the value in the 1x1 resultset generated by the command</returns>public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteScalar(connectionString, commandType, commandText, (MySqlParameter[])null);}public static object ExecuteScalar(CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//pass through the call providing null for the set of SqlParametersreturn ExecuteScalar(connectionString, commandType, commandText, commandParameters);}/// <summary>/// Execute a SqlCommand (that returns a 1x1 resultset) against the database specified in the connection string /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  int orderCount = (int)ExecuteScalar(connString, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</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>an object containing the value in the 1x1 resultset generated by the command</returns>public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){//create & open a SqlConnection, and dispose of it after we are done.using (MySqlConnection cn = new MySqlConnection(connectionString)){cn.Open();//call the overload that takes a connection in place of the connection stringreturn ExecuteScalar(cn, commandType, commandText, commandParameters);}}/// <summary>/// Execute a SqlCommand (that returns a 1x1 resultset and takes no parameters) against the provided SqlConnection. /// </summary>/// <remarks>/// e.g.:  ///  int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount");/// </remarks>/// <param name="connection">a valid SqlConnection</param>/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>/// <param name="commandText">the stored procedure name or T-SQL command</param>/// <returns>an object containing the value in the 1x1 resultset generated by the command</returns>public static object ExecuteScalar(MySqlConnection connection, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteScalar(connection, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a 1x1 resultset) against the specified SqlConnection /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("?prodid", 24));/// </remarks>/// <param name="connection">a valid SqlConnection</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>an object containing the value in the 1x1 resultset generated by the command</returns>public static object ExecuteScalar(MySqlConnection connection, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, connection, (MySqlTransaction)null, commandType, commandText, commandParameters);//execute the command & return the resultsobject retval = cmd.ExecuteScalar();// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();return retval;}catch (Exception ex){Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}finally{connection.Close();}return null;}/// <summary>/// Execute a SqlCommand (that returns a 1x1 resultset and takes no parameters) against the provided SqlTransaction. /// </summary>/// <remarks>/// e.g.:  ///  int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount");/// </remarks>/// <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 T-SQL command</param>/// <returns>an object containing the value in the 1x1 resultset generated by the command</returns>public static object ExecuteScalar(MySqlTransaction transaction, CommandType commandType, string commandText){//pass through the call providing null for the set of SqlParametersreturn ExecuteScalar(transaction, commandType, commandText, (MySqlParameter[])null);}/// <summary>/// Execute a SqlCommand (that returns a 1x1 resultset) against the specified SqlTransaction/// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("?prodid", 24));/// </remarks>/// <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 T-SQL command</param>/// <param name="commandParameters">an array of SqlParamters 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(MySqlTransaction transaction, CommandType commandType, string commandText,params MySqlParameter[] commandParameters){try{//create a command and prepare it for executionMySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);//execute the command & return the resultsobject retval = cmd.ExecuteScalar();// detach the SqlParameters from the command object, so they can be used again.cmd.Parameters.Clear();return retval;}catch (Exception ex){transaction.Connection.Close();Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");}return null;}#endregion ExecuteScalar}

转载于:https://www.cnblogs.com/Warmsunshine/p/5740687.html

MySql 数据操作类相关推荐

  1. mysql 数据操作类_MySql数据库操作类

    using System; using System.Data; using System.IO; using System.Linq; using System.Text; using MySql. ...

  2. mysql 数据操作类_MySql 数据操作类

    /// /// MySqlHelper 的摘要说明. /// public class MySqlHelper { public static string connectionString = Co ...

  3. ECShop的数据操作类文件

    ECShopv2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小.另外,当网站需 ...

  4. c winform mysql类_C#连接MySQL数据库操作类

    首先需要安装MySQL Connector Net 6.8.3 然后在项目中引用MySQL Connector,如下图所示 C#连接MySQL的操作类代码如下:public class MySQLHe ...

  5. Spring Boot + JPA +MySQL 数据操作及示例环境搭建(自动建表)

    JPA 是Java官方提供的数据持久的统一API , 是一个接口标准,并没有具体实现. JPA的实现常见的有: Hibernate TopLink (Eclipse Link) Spring Boot ...

  6. mysql数据库操作类

    mysql数据库操作类. 配置文件: <?php $db_config["hostname"] = "localhost"; //服务器地址 $db_co ...

  7. mysql db模块下载_易语言MySql数据库操作类V1.0模块源码

    易语言MySql数据库操作类V1.0模块源码 易语言MySql数据库操作类V1.0模块源码 系统结构:MySql数据库连接类_测试子程序,置连接选项,连接,关闭,是否已连接,取连接句柄,置连接句柄,执 ...

  8. DbHelper数据操作类,DbProviderFactories

    其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...

  9. php mysql 数据库操作类_php mysql数据库操作类

    分享一个本人一直在使用的一个mysql数据库操作类,比较初级,自己给别人做web网站的时候一直用的这个类,这个也是之前刚开始学习php的时候在网上找到的一个mysql数据库操作类,后来自己改了一些,比 ...

最新文章

  1. web本地存储-IndexedDB
  2. 小型化RDA5807调频收音模块实验板
  3. MSI-X 之有别于MSI
  4. 手写bind_深入理解 JavaScript 之手写 call, apply, bind 方法
  5. java 十 = 0_从零学java笔录-第10篇 数据类型(四)
  6. python3多进程 进程池 协程并发
  7. matlab全下标方式取出,matlab习题
  8. python是什么 自学-初学 Python 者自学 Anaconda 的正确姿势是什么?
  9. backbone学习笔记:集合(Collection)
  10. iOS开发之isa、superclass(课程总结)
  11. python求最值_Python应用:python求极值点(波峰波谷)
  12. 计算机删除文件的原理,三个简单步骤,马上恢复被永久删除的文件
  13. 我们雇佣了一只大猴子...
  14. 中国IT产业人才分布地图
  15. JavaScript学习笔记01——简介(李炎恢JavaScript教程)
  16. 数字货币量化分析报告_2017-09-04
  17. 机器学习笔记——神经网络与深度学习
  18. 编译、汇编、翻译原理知识概括
  19. 现在的C语言编辑器里的int范围为什么是-2147483648~2147483647
  20. Java使用华软通信能力平台实现短信发送

热门文章

  1. 计算机二级vf笔试,计算机二级(VF)笔试120.doc
  2. nginx stream代理
  3. 使用Maven管理的项目,如何设置Context Root
  4. okhttp连接池_OkHttp配置HTTPS访问+服务器部署
  5. java三级考试题库_JAVA题库:格林模拟试题三(下)
  6. php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码
  7. 用循环队列模拟银行窗口排队_银行告诉你什么是无锁队列
  8. PYG教程【二】使用networkx创建一个PYG图
  9. 从零开始学习docker(六)部署一个稍微复杂一点的应用
  10. Java sqlite事务方法,Java SQLiteDatabase.insert方法代码示例