/// <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; } } }
private void btn_Modify_Click(object sender, EventArgs e) { if (txtBox_ServerIp.Text == "") { MessageBox.Show("数据库服务器IP地址不能为空,请指定数据库服务器IP地址。本机数据库服务器IP地址:127.0.0.1 。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (txtBox_DbName.Text == "") { MessageBox.Show("数据库名称不能为空,请指定需要连接的数据库名称。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (txtBox_LoginUser.Text == "") { MessageBox.Show("数据库登录用户名不能为空,请指定需要连接的数据库登录用户的名称。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (txtBox_Passwd.Text == "") { MessageBox.Show("数据库登录用户密码不能为空,请指定需要连接的数据库登录用户密码。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string serverIp = txtBox_ServerIp.Text.Trim(); string dbName = txtBox_DbName.Text.Trim(); string usrName = txtBox_LoginUser.Text.Trim(); string usrPwd = txtBox_Passwd.Text.Trim(); IniFileConfigurer.Write(serverIp, dbName, usrName, usrPwd); if (this.btn_Modify.Text == "创建") { MessageBox.Show("数据库连接配置文件创建成功。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("数据库连接配置文件修改成功。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void ServerConnConfiguration_Load(object sender, EventArgs e) { string fileName = "ConnConfig.ini"; string pathStr = Application.StartupPath + "\\" + fileName; //INI文件的物理地址 if (File.Exists(pathStr)) { string[] str = IniFileConfigurer.Load(); txtBox_ServerIp.Text = str[0].Trim(); txtBox_DbName.Text = str[1].Trim(); txtBox_LoginUser.Text = str[2].Trim(); txtBox_Passwd.Text = str[3].Trim(); } else { //MessageBox.Show("配置文件不存在,请创建数据库服务器连接配置文件。", // "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); this.btn_Modify.Text = "创建"; } }