Example #1
0
        /// <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;
                }
            }
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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();
            }
        }
Example #4
0
        /// <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);
            }
        }
Example #5
0
        /// <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 = "创建";
            }
        }