mysql 数据操作类_MySql 数据操作类

///

/// MySqlHelper 的摘要说明。

///

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()

{

}

///

/// 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.

///

/// The command to which the parameters will be added

/// an array of SqlParameters tho be added to command

private static void AttachParameters(MySqlCommand command, MySqlParameter[] commandParameters)

{

try

{

foreach (MySqlParameter p in commandParameters)

{

//check for derived output value with no value assigned

if ((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(), "异常日志");

}

}

///

/// This method assigns an array of values to an array of SqlParameters.

///

/// array of SqlParameters to be assigned values

/// array of Components holding the values to be assigned

private static void AssignParameterValues(MySqlParameter[] commandParameters, object[] parameterValues)

{

try

{

if ((commandParameters == null) || (parameterValues == null))

{

//do nothing if we get no data

return;

}

// we must have the same number of values as we pave parameters to put them in

if (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 array

for (int i = 0, j = commandParameters.Length; i < j; i++)

{

commandParameters[i].Value = parameterValues[i];

}

}

catch (Exception ex)

{

Utils.WriteLogFile(ex.Message.ToString(), "异常日志");

}

}

///

/// This method opens (if necessary) and assigns a connection, transaction, command type and parameters

/// to the provided command.

///

/// the SqlCommand to be prepared

/// a valid SqlConnection, on which to execute this command

/// a valid SqlTransaction, or 'null'

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParameters to be associated with the command or 'null' if no parameters are required

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 it

if (connection.State != ConnectionState.Open)

{

connection.Open();

}

//associate the connection with the command

command.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 type

command.CommandType = commandType;

//attach the command parameters if they are provided

if (commandParameters != null)

{

AttachParameters(command, commandParameters);

}

}

catch (Exception ex)

{

Utils.WriteLogFile(ex.Message.ToString(), "异常日志");

}

return;

}

#endregion private utility methods & constructors

#region DataHelpers

public static string CheckNull(object obj)

{

return (string)obj;

}

public static string CheckNull(DBNull obj)

{

return null;

}

#endregion

#region AddParameters

public 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);

}

///

/// Make input param.

///

/// Name of param.

/// Param type.

/// Param size.

/// Param value.

/// New parameter.

public static MySqlParameter MakeInParam(string ParamName, MySqlDbType DbType, int Size, object Value)

{

return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);

}

///

/// Make input param.

///

/// Name of param.

/// Param type.

/// Param size.

/// New parameter.

public static MySqlParameter MakeOutParam(string ParamName, MySqlDbType DbType, int Size)

{

return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);

}

///

/// Make stored procedure param.

///

/// Name of param.

/// Param type.

/// Param size.

/// Parm direction.

/// Param value.

/// New parameter.

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);

else

param = new MySqlParameter(ParamName, DbType);

param.Direction = Direction;

if (!(Direction == ParameterDirection.Output && Value == null))

param.Value = Value;

return param;

}

#endregion

#region ExecuteNonQuery

///

/// Execute a SqlCommand (that returns no resultset and takes no parameters) against the database specified in

/// the connection string.

///

///

/// e.g.:

/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders");

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an int representing the number of rows affected by the command

public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return 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 SqlParameters

return ExecuteNonQuery(connectionString, commandType, commandText, commandParameters);

}

///

/// Execute a SqlCommand (that returns no resultset) against the database specified in the connection string

/// using the provided parameters.

///

///

/// e.g.:

/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("?prodid", 24));

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// an int representing the number of rows affected by the command

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 string

return ExecuteNonQuery(cn, commandType, commandText, commandParameters);

}

}

///

/// Execute a SqlCommand (that returns no resultset and takes no parameters) against the provided SqlConnection.

///

///

/// e.g.:

/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders");

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an int representing the number of rows affected by the command

public static int ExecuteNonQuery(MySqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteNonQuery(connection, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns no resultset) against the specified SqlConnection

/// using the provided parameters.

///

///

/// e.g.:

/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// an int representing the number of rows affected by the command

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 execution

MySqlCommand 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;

}

///

/// Execute a SqlCommand (that returns no resultset and takes no parameters) against the provided SqlTransaction.

///

///

/// e.g.:

/// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders");

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an int representing the number of rows affected by the command

public static int ExecuteNonQuery(MySqlTransaction transaction, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteNonQuery(transaction, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns no resultset) against the specified SqlTransaction

/// using the provided parameters.

///

///

/// e.g.:

/// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// an int representing the number of rows affected by the command

public static int ExecuteNonQuery(MySqlTransaction transaction, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand 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 ExecuteDataSet

public static DataSet ExecuteDataset(CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataset(connectionString, commandType, commandText, commandParameters);

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the database specified in

/// the connection string.

///

///

/// e.g.:

/// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders");

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a dataset containing the resultset generated by the command

public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataset(connectionString, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the database specified in the connection string

/// using the provided parameters.

///

///

/// e.g.:

/// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a dataset containing the resultset generated by the command

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 string

return ExecuteDataset(cn, commandType, commandText, commandParameters);

}

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlConnection.

///

///

/// e.g.:

/// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders");

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a dataset containing the resultset generated by the command

public static DataSet ExecuteDataset(MySqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataset(connection, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the specified SqlConnection

/// using the provided parameters.

///

///

/// e.g.:

/// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a dataset containing the resultset generated by the command

public static DataSet ExecuteDataset(MySqlConnection connection, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(cmd, connection, (MySqlTransaction)null, commandType, commandText, commandParameters);

//create the DataAdapter & DataSet

MySqlDataAdapter 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 dataset

return ds;

}

catch (Exception ex)

{

Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");

}

finally

{

connection.Close();

}

return null;

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlTransaction.

///

///

/// e.g.:

/// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders");

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a dataset containing the resultset generated by the command

public static DataSet ExecuteDataset(MySqlTransaction transaction, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataset(transaction, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the specified SqlTransaction

/// using the provided parameters.

///

///

/// e.g.:

/// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a dataset containing the resultset generated by the command

public static DataSet ExecuteDataset(MySqlTransaction transaction, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);

//create the DataAdapter & DataSet

MySqlDataAdapter 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 dataset

return ds;

}

catch (Exception ex)

{

transaction.Connection.Close();

Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");

}

return null;

}

#endregion ExecuteDataSet

#region ExecuteDataTable

public static DataTable ExecuteDataTable(CommandType commandType, string commandText)

{

return ExecuteDataTable(connectionString, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the database specified in

/// the connection string.

///

///

/// e.g.:

/// DataTable dt = ExecuteDataTable(connString, CommandType.StoredProcedure, "GetOrders");

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a DataTable containing the resultset generated by the command

public static DataTable ExecuteDataTable(string connectionString, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return 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 string

return ExecuteDataTable(cn, commandType, commandText, commandParameters);

}

}

///

/// Execute a SqlCommand (that returns a resultset) against the database specified in the connection string

/// using the provided parameters.

///

///

/// e.g.:

/// DataTable dt = ExecuteDataTable(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a DataTable containing the resultset generated by the command

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 string

return ExecuteDataTable(cn, commandType, commandText, commandParameters);

}

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlConnection.

///

///

/// e.g.:

/// DataTable dt = ExecuteDataTable(conn, CommandType.StoredProcedure, "GetOrders");

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a DataTable containing the resultset generated by the command

public static DataTable ExecuteDataTable(MySqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataTable(connection, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the specified SqlConnection

/// using the provided parameters.

///

///

/// e.g.:

/// DataTable dt = ExecuteDataTable(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a DataTable containing the resultset generated by the command

public static DataTable ExecuteDataTable(MySqlConnection connection, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

cmd.CommandTimeout = 140;

PrepareCommand(cmd, connection, (MySqlTransaction)null, commandType, commandText, commandParameters);

//create the DataAdapter & DataTable

MySqlDataAdapter 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;

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlTransaction.

///

///

/// e.g.:

/// DataTable dt = ExecuteDataTable(trans, CommandType.StoredProcedure, "GetOrders");

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a DataTable containing the resultset generated by the command

public static DataTable ExecuteDataTable(MySqlTransaction transaction, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataTable(transaction, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the specified SqlTransaction

/// using the provided parameters.

///

///

/// e.g.:

/// DataTable dt = ExecuteDataTable(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a DataTable containing the resultset generated by the command

public static DataTable ExecuteDataTable(MySqlTransaction transaction, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

cmd.CommandTimeout = 140;

PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);

//create the DataAdapter & DataTable

MySqlDataAdapter 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 DataTable

return dt;

}

catch (Exception ex)

{

transaction.Connection.Close();

Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");

}

return null;

}

#endregion ExecuteDataTable

#region ExecuteReader

///

/// 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()

///

private enum SqlConnectionOwnership

{

/// Connection is owned and managed by SqlHelper

Internal,

/// Connection is owned and managed by the caller

External

}

///

/// Create and prepare a SqlCommand, and call ExecuteReader with the appropriate CommandBehavior.

///

///

/// 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.

///

/// a valid SqlConnection, on which to execute this command

/// a valid SqlTransaction, or 'null'

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParameters to be associated with the command or 'null' if no parameters are required

/// indicates whether the connection parameter was provided by the caller, or created by SqlHelper

/// SqlDataReader containing the results of the command

private static MySqlDataReader ExecuteReader(MySqlConnection connection, MySqlTransaction transaction,

CommandType commandType, string commandText,

MySqlParameter[] commandParameters,

SqlConnectionOwnership connectionOwnership)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters);

//create a reader

MySqlDataReader dr;

// call ExecuteReader with the appropriate CommandBehavior

if (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 SqlParameters

return 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 SqlParameters

return ExecuteReader(connectionString, commandType, commandText, commandParameters);

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the database specified in

/// the connection string.

///

///

/// e.g.:

/// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders");

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a SqlDataReader containing the resultset generated by the command

public static MySqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteReader(connectionString, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the database specified in the connection string

/// using the provided parameters.

///

///

/// e.g.:

/// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a SqlDataReader containing the resultset generated by the command

public static MySqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

//create & open a SqlConnection

MySqlConnection cn = new MySqlConnection(connectionString);

cn.Open();

try

{

//call the private overload that takes an internally owned connection in place of the connection string

return ExecuteReader(cn, null, commandType, commandText, commandParameters,

SqlConnectionOwnership.Internal);

}

catch

{

//if we fail to return the SqlDatReader, we need to close the connection ourselves

cn.Close();

throw;

}

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlConnection.

///

///

/// e.g.:

/// SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders");

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a SqlDataReader containing the resultset generated by the command

public static MySqlDataReader ExecuteReader(MySqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteReader(connection, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the specified SqlConnection

/// using the provided parameters.

///

///

/// e.g.:

/// SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a SqlDataReader containing the resultset generated by the command

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 connection

return ExecuteReader(connection, (MySqlTransaction)null, commandType, commandText, commandParameters,

SqlConnectionOwnership.External);

}

///

/// Execute a SqlCommand (that returns a resultset and takes no parameters) against the provided SqlTransaction.

///

///

/// e.g.:

/// SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders");

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// a SqlDataReader containing the resultset generated by the command

public static MySqlDataReader ExecuteReader(MySqlTransaction transaction, CommandType commandType,

string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteReader(transaction, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a resultset) against the specified SqlTransaction

/// using the provided parameters.

///

///

/// e.g.:

/// SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("?prodid", 24));

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// a SqlDataReader containing the resultset generated by the command

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 caller

return ExecuteReader(transaction.Connection, transaction, commandType, commandText, commandParameters,

SqlConnectionOwnership.External);

}

#endregion ExecuteReader

#region ExecuteScalar

///

/// Execute a SqlCommand (that returns a 1x1 resultset and takes no parameters) against the database specified in

/// the connection string.

///

///

/// e.g.:

/// int orderCount = (int)ExecuteScalar(connString, CommandType.StoredProcedure, "GetOrderCount");

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an object containing the value in the 1x1 resultset generated by the command

public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return 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 SqlParameters

return ExecuteScalar(connectionString, commandType, commandText, commandParameters);

}

///

/// Execute a SqlCommand (that returns a 1x1 resultset) against the database specified in the connection string

/// using the provided parameters.

///

///

/// e.g.:

/// int orderCount = (int)ExecuteScalar(connString, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("?prodid", 24));

///

/// a valid connection string for a SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// an object containing the value in the 1x1 resultset generated by the command

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 string

return ExecuteScalar(cn, commandType, commandText, commandParameters);

}

}

///

/// Execute a SqlCommand (that returns a 1x1 resultset and takes no parameters) against the provided SqlConnection.

///

///

/// e.g.:

/// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount");

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an object containing the value in the 1x1 resultset generated by the command

public static object ExecuteScalar(MySqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteScalar(connection, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a 1x1 resultset) against the specified SqlConnection

/// using the provided parameters.

///

///

/// e.g.:

/// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("?prodid", 24));

///

/// a valid SqlConnection

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// an object containing the value in the 1x1 resultset generated by the command

public static object ExecuteScalar(MySqlConnection connection, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

PrepareCommand(cmd, connection, (MySqlTransaction)null, 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;

}

catch (Exception ex)

{

Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");

}

finally

{

connection.Close();

}

return null;

}

///

/// Execute a SqlCommand (that returns a 1x1 resultset and takes no parameters) against the provided SqlTransaction.

///

///

/// e.g.:

/// int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount");

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an object containing the value in the 1x1 resultset generated by the command

public static object ExecuteScalar(MySqlTransaction transaction, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteScalar(transaction, commandType, commandText, (MySqlParameter[])null);

}

///

/// Execute a SqlCommand (that returns a 1x1 resultset) against the specified SqlTransaction

/// using the provided parameters.

///

///

/// e.g.:

/// int orderCount = (int)ExecuteScalar(trans, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("?prodid", 24));

///

/// a valid SqlTransaction

/// the CommandType (stored procedure, text, etc.)

/// the stored procedure name or T-SQL command

/// an array of SqlParamters used to execute the command

/// an object containing the value in the 1x1 resultset generated by the command

public static object ExecuteScalar(MySqlTransaction transaction, CommandType commandType, string commandText,

params MySqlParameter[] commandParameters)

{

try

{

//create a command and prepare it for execution

MySqlCommand cmd = new MySqlCommand();

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;

}

catch (Exception ex)

{

transaction.Connection.Close();

Utils.WriteLogFile("执行" + commandText + "时" + ex.Message.ToString(), "异常日志");

}

return null;

}

#endregion ExecuteScalar

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值