using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AFKAbutment { public class NMySqlHelper { /// /// 数据连接 /// public MySqlConnection _connection; /// /// 请求超时时间 /// public int CommandTimeout; #region ExecuteAdapter public NMySqlHelper(MySqlConnection connection) { this._connection = connection; this._connection.Open(); } /// /// 说明:获取适配器 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// The command parameters. /// MySqlDataAdapter. public MySqlDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { MySqlDataAdapter adapter; MySqlCommand cmd = new MySqlCommand(); try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); adapter = new MySqlDataAdapter(cmd); } catch { throw; } return adapter; } /// /// 说明:获取适配器 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// MySqlDataAdapter. public MySqlDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText) { MySqlDataAdapter adapter; MySqlCommand cmd = new MySqlCommand(); try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, null); adapter = new MySqlDataAdapter(cmd); } catch { throw; } return adapter; } #endregion #region ExecuteDataTable /// /// 说明:执行sql返回DataTable /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command text. /// DataTable. public DataTable ExecuteDataTable(string cmdText) { return ExecuteDataSet(cmdText).Tables[0]; } /// /// 说明:执行sql返回DataTable /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command text. /// DataTable. public DataTable ExecuteDataTable(string cmdText, params MySqlParameter[] commandParameters) { return ExecuteDataSet(CommandType.Text, cmdText, "temp", commandParameters).Tables[0]; } /// /// 说明:执行sql返回指定字段值 /// 创建人:龚宇超 /// 创建日期:2017-08-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Name of the field. /// The command text. /// System.Object. public object ExecuteObject(string fieldName, string cmdText) { object result = null; try { result = ExecuteDataSet(cmdText).Tables[0].Rows[0][fieldName]; } catch (Exception) { } return result; } /// /// 说明:执行sql返回指定字段值 /// 创建人:龚宇超 /// 创建日期:2017-11-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Name of the field. /// The command text. /// The command parameters. /// System.Object. public object ExecuteObject(string fieldName, string cmdText, params MySqlParameter[] commandParameters) { object result = null; try { result = ExecuteDataSet(CommandType.Text, cmdText, "temp", commandParameters).Tables[0].Rows[0][fieldName]; } catch (Exception) { } return result; } /// /// 说明:执行sql返回指定字段值 /// 创建人:龚宇超 /// 创建日期:2017-08-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Name of the field. /// The command text. /// System.Object. public string ExecuteString(string fieldName, string cmdText) { object obj = ExecuteObject(fieldName, cmdText); return obj == null ? "" : obj.ToString(); } /// /// 说明:执行sql返回指定字段值 /// 创建人:龚宇超 /// 创建日期:2017-11-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Name of the field. /// The command text. /// The command parameters. /// System.String. public string ExecuteString(string fieldName, string cmdText, params MySqlParameter[] commandParameters) { object obj = ExecuteObject(fieldName, cmdText, commandParameters); return obj == null ? "" : obj.ToString(); } #endregion #region ExecuteDataSet /// /// 说明:查询结果集 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// Name of the tab. /// The command parameters. /// DataSet. public DataSet ExecuteDataSet(int cmdType, string cmdText, string tabName, params MySqlParameter[] commandParameters) { CommandType _cmdType = CommandType.Text; switch (cmdType) { case 4: _cmdType = CommandType.StoredProcedure; break; case 512: _cmdType = CommandType.TableDirect; break; } return ExecuteDataSet(_cmdType, cmdText, tabName, commandParameters); } /// /// 说明:查询结果集 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 语句类型存储过程或者sql语句 /// 执行内容 /// 表名 /// 参数 /// DataSet. public DataSet ExecuteDataSet(CommandType cmdType, string cmdText, string tabName, params MySqlParameter[] commandParameters) { DataSet set2; MySqlCommand cmd = new MySqlCommand(); try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);//sql参数处理 MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);//创建对象,与sql命令对象绑定 DataSet dataSet = new DataSet(); adapter.Fill(dataSet, tabName);//填充数据。第二个参数是数据集中内存表的名字,可以与数据库中的不同 //adapter.FillSchema(dataSet, SchemaType.Mapped, tabName); set2 = dataSet; } catch (Exception e) { if (e.Message.StartsWith("在从服务器接收结果时发生传输级错误") || e.Message.StartsWith("在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误") || e.Message.StartsWith("在向服务器发送请求时发生传输级错误")) { throw new Exception("无法连接服务器,请检查网络连接."); } else { throw new Exception(e.Message + " SQL=[ " + cmdText + " ]", e); //throw; } } finally { cmd.Dispose(); } return set2; } /// /// 说明:查询结果集 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 语句类型存储过程或者sql语句 /// 执行内容 /// 表名 /// DataSet. public DataSet ExecuteDataSet(CommandType cmdType, string cmdText, string tabName) { return ExecuteDataSet(cmdType, cmdText, tabName, null); } /// /// 说明:查询结果集 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 执行内容 /// DataSet. public DataSet ExecuteDataSet(string cmdText) { return ExecuteDataSet(CommandType.Text, cmdText, "temp"); } /// /// 说明:查询结果集 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Name of the procedure. /// 表名 /// The parameter names. /// The parameter values. /// DataSet. public DataSet ExecuteDataSet(string procedureName, string tabName, string[] parameterNames, object[] parameterValues) { DataSet set2; try { MySqlCommand cmd = new MySqlCommand(procedureName, _connection); cmd.CommandType = CommandType.StoredProcedure; if (parameterNames != null && parameterValues != null) { for (int i = 0; i < parameterNames.Length && i < parameterValues.Length; i++) { cmd.Parameters.AddWithValue(parameterNames[i], parameterValues[i]); } } MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataSet dataSet = new DataSet(); adapter.Fill(dataSet, tabName); set2 = dataSet; } catch { throw; } return set2; } #endregion #region ExecuteNonQuery /// /// 说明:执行sql语句或者存储过程 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// The command parameters. /// System.Int32. public int ExecuteNonQuery(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { MySqlCommand cmd = new MySqlCommand(); int num = 0; try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); num = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } catch (Exception e) { if (e.Message.StartsWith("在从服务器接收结果时发生传输级错误") || e.Message.StartsWith("在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误") || e.Message.StartsWith("在向服务器发送请求时发生传输级错误")) { throw new Exception("无法连接服务器,请检查网络连接."); } else { throw new Exception(e.Message + " SQL=[ " + cmdText + " ]", e); //throw; } } finally { cmd.Dispose(); } return num; } /// /// 说明:执行sql语句或者存储过程 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// System.Int32. public int ExecuteNonQuery(CommandType cmdType, string cmdText) { return ExecuteNonQuery(CommandType.Text, cmdText, null); } /// /// 说明:执行sql语句或者存储过程 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command text. /// System.Int32. public int ExecuteNonQuery(string cmdText) { return ExecuteNonQuery(CommandType.Text, cmdText); } #endregion #region ExecuteReader /// /// 说明:执行sql语句或者存储过程并返回结果集(只读、只进) /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// The command parameters. /// OleDbDataReader. public MySqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { MySqlDataReader reader2; MySqlCommand cmd = new MySqlCommand(); try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); MySqlDataReader reader = cmd.ExecuteReader(); cmd.Parameters.Clear(); reader2 = reader; } catch { throw; } return reader2; } #endregion #region ExecuteScalar /// /// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The connectionection. /// Type of the command. /// The command text. /// The command parameters. /// System.Object. public object ExecuteScalar(MySqlConnection Connectionection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { MySqlCommand cmd = new MySqlCommand(); PrepareCommand(cmd, Connectionection, null, cmdType, cmdText, commandParameters); object obj2 = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return obj2; } /// /// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// The command parameters. /// System.Object. public object ExecuteScalar(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { MySqlCommand cmd = new MySqlCommand(); { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); object obj2 = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return obj2; } } /// /// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// System.Object. public object ExecuteScalar(CommandType cmdType, string cmdText) { MySqlCommand cmd = new MySqlCommand(); { PrepareCommand(cmd, _connection, null, cmdType, cmdText, null); object obj2 = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return obj2; } } /// /// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 /// 创建人:龚宇超 /// 创建日期:2017-08-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command text. /// System.Object. public object ExecuteScalar(string cmdText) { MySqlCommand cmd = new MySqlCommand(); { PrepareCommand(cmd, _connection, null, CommandType.Text, cmdText, null); object obj2 = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return obj2; } } #endregion #region PrepareCommand /// /// 说明: sql参数处理 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command. /// The connection. /// The trans. /// Type of the command. /// The command text. /// The command parms. private void PrepareCommand(MySqlCommand cmd, MySqlConnection Connection, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms) { if (Connection.State != ConnectionState.Open) { Connection.Open(); } cmd.Connection = Connection; cmd.CommandTimeout = CommandTimeout; cmd.CommandText = cmdText; if (trans != null) { cmd.Transaction = trans; } cmd.CommandType = cmdType; if (cmdParms != null) { foreach (MySqlParameter parameter in cmdParms) { cmd.Parameters.Add(parameter); } } } #endregion } }