zoukankan      html  css  js  c++  java
  • SqlHelper

    预处理

    Appconfig中设置连接字符串

    <connectionStrings>
       <add name="connStr" connectionString="Server =127.0.0.1;Database= school;Uid = root; Pwd = a123456789"/>
    </connectionStrings>
    

    构造函数获取SQL连接字符串

    string _connStr = string.Empty;
    /// <summary>
    /// 获取连接MySql连接字符串
    /// </summary>
    /// <param name="connKey">配置项中连接字符串的键connStr</param>
    public MySqlHelper(string connKey)
    {
        _connStr = ConfigurationManager.ConnectionStrings[connKey].ConnectionString;
    }
    

    对数据进行预处理

     #region 预处理过程
            /// <summary>
            /// 预处理
            /// </summary>
            /// <param name="conn">连接字符串</param>
            /// <param name="type">命令类型</param>
            /// <param name="cmdText">需要执行的SQL语句</param>
            /// <param name="cmd"></param>
            /// <param name="trans">SQL事务</param>
            /// <param name="parameters">参数化查询</param>
            public void Prepare(MySqlConnection conn, CommandType type, string cmdText, MySqlCommand cmd, MySqlTransaction trans, MySqlParameter[] parameters)
            {
                //判断是否为空
                if (string.IsNullOrWhiteSpace(cmdText)) throw new NullReferenceException("执行语句不能为空!");
                //判断数据库是否打开
                if (conn.State != ConnectionState.Open) conn.Open();
                cmd.Connection = conn;
                //事务判断
                if (trans != null) cmd.Transaction = trans;
                //CommandType判断
                if (type != CommandType.Text) cmd.CommandType = type;
                cmd.CommandText = cmdText;
                //参数处理
                if (parameters != null && parameters.Length > 0)
                {
                    cmd.Parameters.AddRange(parameters);
                }
            }
            #endregion
    

    返回MySqlConnections

    #region 返回MySqlConnections
            public MySqlConnection GetConnection(string connStr = "")
            {
                connStr = string.IsNullOrWhiteSpace(connStr) ? _connStr : connStr;
                return new MySqlConnection(connStr);
            }
            #endregion
    

    核心功能

    执行非查询语句 ExecuteNonQuey 方式集合

    #region 01 执行非查询语句 ExecuteNonQuey 方式集合
            /// <summary>
            /// ExecuteNonQuey 通过构造函数提供的连接字符串进行操作
            /// </summary>
            /// <param name="cmdText">需要执行的SQL语句</param>
            /// <param name="parameter">参数列表</param>
            /// <param name="connStr">连接字符串(可空)为空则使用构造函数中提供的连接字符串</param>
            /// <param name="type">执行方式(存储过程 | 语句··)</param>
            /// <returns>返回 执行后受影响的行数</returns>
            public int ExecuteNonQuey(string cmdText, MySqlParameter[] parameter, string connStr = "", CommandType type = CommandType.Text)
            {
                //判断connStr是否为空,如果为空则使用配置文件中的连接字符串
                connStr = string.IsNullOrWhiteSpace(connStr) ? _connStr : connStr;
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    using (MySqlCommand cmd = new MySqlCommand(cmdText, conn))
                    {
                        //避免多次判断,单独创建预处理过程
                        Prepare(conn, type, cmdText, cmd, null, parameter);
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
    
            public int ExecuteNonQuey(MySqlConnection conn, string cmdText, MySqlParameter[] parameter, CommandType type = CommandType.Text)
            {
    
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    Prepare(conn, type, cmdText, cmd, null, parameter);
                    return cmd.ExecuteNonQuery();
                }
    
            }
    
    
            public int ExecuteNonQuey(MySqlTransaction trans, string cmdText, MySqlParameter[] parameter, CommandType type = CommandType.Text)
            {
    
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    Prepare(trans.Connection, type, cmdText, cmd, trans, parameter);
                    return cmd.ExecuteNonQuery();
                }
    
            }
            #endregion
    

    执行标量查询 ExecuteScalar 方式集合

    #region 02 执行标量查询 ExecuteScalar 方式集合
            /// <summary>
            /// ExecuteScalar 标量查询
            /// </summary>
            /// <param name="cmdText">需要执行的SQL语句</param>
            /// <param name="parameter">参数列表</param>
            /// <param name="connStr">连接字符串(可空)为空则使用构造函数中提供的连接字符串</param>
            /// <param name="type">执行方式(存储过程 | 语句··)</param>
            /// <returns>返回 标量结果</returns>
            public object ExecuteScalar(string cmdText, MySqlParameter[] parameter, string connStr = "", CommandType type = CommandType.Text)
            {
                //判断connStr是否为空,如果为空则使用配置文件中的连接字符串
                connStr = string.IsNullOrWhiteSpace(connStr) ? _connStr : connStr;
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    using (MySqlCommand cmd = new MySqlCommand(cmdText, conn))
                    {
                        //避免多次判断,单独创建预处理过程
                        Prepare(conn, type, cmdText, cmd, null, parameter);
                        return cmd.ExecuteScalar();
                    }
                }
            }
    
            public object ExecuteScalar(MySqlConnection conn, string cmdText, MySqlParameter[] parameter, CommandType type = CommandType.Text)
            {
    
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    Prepare(conn, type, cmdText, cmd, null, parameter);
                    return cmd.ExecuteScalar();
                }
    
            }
    
    
            public object ExecuteScalar(MySqlTransaction trans, string cmdText, MySqlParameter[] parameter, CommandType type = CommandType.Text)
            {
    
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    Prepare(trans.Connection, type, cmdText, cmd, trans, parameter);
                    return cmd.ExecuteScalar();
                }
    
            }
            #endregion
    

    执行查询语句 DataReader 方式集合

    #region 03 执行查询语句 DataReader 方式集合
            /// <summary>
            /// ExecuteDataReader 查询
            /// </summary>
            /// <param name="cmdText">需要执行的SQL语句</param>
            /// <param name="parameter">参数列表</param>
            /// <param name="connStr">连接字符串(可空)为空则使用构造函数中提供的连接字符串</param>
            /// <param name="type">执行方式(存储过程 | 语句··)</param>
            /// <returns>返回 DataReader</returns>
            public MySqlDataReader ExecuteDataReader(string cmdText, MySqlParameter[] parameter, string connStr = "", CommandType type = CommandType.Text)
            {
                //判断connStr是否为空,如果为空则使用配置文件中的连接字符串
                connStr = string.IsNullOrWhiteSpace(connStr) ? _connStr : connStr;
                MySqlConnection conn = new MySqlConnection(connStr);
                MySqlCommand cmd = new MySqlCommand();            
                Prepare(conn, type, cmdText, cmd, null, parameter);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection); //CommandBehavior.CloseConnection 当关闭Reader的时候 自动关闭连接
    
            }
    
    
            public MySqlDataReader ExecuteDataReader(MySqlConnection conn, string cmdText, MySqlParameter[] parameter, CommandType type = CommandType.Text)
            {
    
                MySqlCommand cmd = new MySqlCommand();
                Prepare(conn, type, cmdText, cmd, null, parameter);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
    
            }
    
            public MySqlDataReader ExecuteDataReader(MySqlTransaction trans, string cmdText, MySqlParameter[] parameter, CommandType type = CommandType.Text)
            {
                MySqlCommand cmd = new MySqlCommand();
                Prepare(trans.Connection, type, cmdText, cmd, trans, parameter);
                return cmd.ExecuteReader();
            }
            #endregion
    
    登峰造极的成就源于自律
  • 相关阅读:
    nginx设置屏蔽,可访问id的方法
    python实现rcp远程调用介绍
    0.0.0.0
    datetime 模块详解 -- 基本的日期和时间类型
    python函数——形参中的:*args和**kwargs
    时间加一天,一个小时得到新的时间
    good blog
    Python-第三方库requests详解
    python requests的content和text方法的区别
    MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
  • 原文地址:https://www.cnblogs.com/fishpond816/p/13467284.html
Copyright © 2011-2022 走看看