/// <summary> /// 用执行的数据库连接执行一个返回数据集的 sql 命令 /// </summary> /// <remarks> /// 举例: /// MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", /// new MySqlParameter("@prodid",24)) /// </remarks> /// <param name="connectionString">一个有效的连接字符串</param> /// <param name="cmdType">命令类型(存储过程,文本,等等)</param> /// <param name="cmdText">存储过程名称或者 sql 命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns>包含结果的读取器</returns> public static MySqlDataReader ExecuteReader(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters) { string connStr = IniFileConfigurer.Read(); //创建一个 MySQLConnection 对象 using (MySqlConnection conn = new MySqlConnection(connStr)) { //创建一个 MySQLCommand 对象 MySqlCommand cmd = new MySqlCommand(); //在这里我们用一个 try/catch 结构执行 sql 文本命令/存储过程,因为如果这个方法产生一个异常,我们要关闭连接, //因为没有读取器存在。 //因此,commandBehavior.CloseConnection 就不会执行 try { //调用 PrepareCommand 方法,对 MySQLCommand 对象设置参数 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); //调用 MySQLCommand 的 ExecuteReader 方法 MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); //清除参数 cmd.Parameters.Clear(); return(reader); } catch { //关闭连接,抛出异常 conn.Close(); throw; } } }
/// <summary> /// 使用现有的 SQL事务 执行一个 sql 命令(不返回数据集) /// </summary> /// <remaks> /// 举例: /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", /// new MySqlParameter("@prodid",24)) /// </remaks> /// <param name="trans">一个现有的事务</param> /// <param name="cmdType">命令类型(存储过程,文本,等等)</param> /// <param name="cmdText">存储过程名称或者sql命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns>执行命令所影响的行数</returns> public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { string connStr = IniFileConfigurer.Read(); using (MySqlCommand cmd = new MySqlCommand()) { PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return(val); } }
/// <summary> /// 用现有的数据库连接执行一个 sql 命令(不返回数据集) /// </summary> /// <param name="conn">一个现有的数据库连接</param> /// <param name="cmdType">命令类型(存储过程,文本,等等)</param> /// <param name="cmdText">存储过程名称或者sql命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns>执行命令所影响的行数</returns> public static void ExecuteCommand(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters) { string connStr = IniFileConfigurer.Read(); using (MySqlConnection conn = new MySqlConnection(connStr)) { MySqlCommand cmd = new MySqlCommand(); PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } }
/// <summary> /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列 /// </summary> /// <remarks> /// 例如: /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", /// new MySqlParameter("@prodid",24)); /// </remarks> /// <param name="connectionString">一个有效的连接字符串</param> /// <param name="cmdType">命令类型(存储过程,文本,等等)</param> /// <param name="cmdText">存储过程名称或者 sql 命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns> /// 用 Convert.To{Type} 把类型转换为想要的 /// </returns> public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) { string connStr = IniFileConfigurer.Read(); using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand cmd = new MySqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return(val); } }
/// <summary> /// 返回 DataSet /// </summary> /// <param name="connectionString">一个有效的连接字符串</param> /// <param name="cmdType">命令类型(存储过程,文本,等等)</param> /// <param name="cmdText">存储过程名称或者 sql 命令语句</param> /// <param name="commandParameters">执行命令所用参数的集合</param> /// <returns></returns> public static DataTable GetDataTable(string cmdText, CommandType cmdType, params MySqlParameter[] commandParameters) { string connStr = IniFileConfigurer.Read(); //创建一个 MySQLConnection 对象 using (MySqlConnection conn = new MySqlConnection(connStr)) { //创建一个 MySQLCommand 对象 MySqlCommand cmd = new MySqlCommand(); //在这里我们用一个 try/catch 结构执行 sql 文本命令/存储过程,因为如果这个方法产生一个异常,我们要关闭连接, //因为没有读取器存在。 //因此,commandBehavior.CloseConnection 就不会执行 try { //调用 PrepareCommand 方法,对 MySQLCommand 对象设置参数 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); //创建 MySqlDataAdapter 对象,将 cmd 赋值给 SelectCommand 属性 MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; //创建 Dataset 对象 //DataSet ds = new DataSet(); //创建 Datatable对象 DataTable dt = new DataTable(); //adapter.Fill(ds); adapter.Fill(dt); //清除参数 cmd.Parameters.Clear(); conn.Close(); return(dt); // ds; } catch (Exception e) { if (e.Message.Contains("Unable to connect to any of the specified MySQL hosts")) { MessageBox.Show("无法成功连接到数据库!,请检查数据库连接参数配置是否正确。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(null); } throw e; } } }