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