使用 SqlClient 创建数据库连接并获取数据

 封装了两个方法,返回dataset和无返回值。

统一设置sqlcommand 的commandtimeout,这个时间与webconfig中设置的数据库连接超时时间不同。默认commandtimeout是30秒。详细如下:

        /// <summary>
        /// 数据库查询并返回结果集
        /// </summary>
        /// <param name="_sql">需要执行的SQL语句或者存储过程名称</param>
        /// <param name="_type">命令类型,text/StoredProcedure/TableDirect</param>
        /// <param name="_constring">数据库连接</param>
        /// <param name="_parameter">参数</param>
        /// <returns></returns>
        public DataSet SqlExecuteReader(string _sql, CommandType _type, string _constring, SqlParameter[] _parameters)
        {
            DataSet ds = new DataSet();
            try
            {
                using (SqlConnection conn = new SqlConnection(_constring))
                {
                    SqlCommand cmd = new SqlCommand(_sql, conn);

                    if (_parameters != null)

                       {foreach (SqlParameter p in _parameters)

                             {
                               cmd.Parameters.Add(p);
                             }
                       }

                    cmd.CommandType = _type;
                    cmd.CommandTimeout = _timeout;//超时时间,单位S
                    conn.Open();
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                    {
                        sda.SelectCommand = cmd;
                        sda.Fill(ds);//填充dataset
                    }
                }
                return ds;
            }
            catch (Exception ex)
            {
                throw;
            }

cmd.ExecuteNonQuery()//是返回受影响的行数。

无返回结果 ExecuteNonQuery:

        /// <summary>
        /// 数据库增删改,返回受影响行数
        /// </summary>
        /// <param name="_sql">数据库脚本 或者 存储过程名</param>
        /// <param name="_type">Text数据库文本,StoredProcedure存储过程名称</param>
        /// <param name="_constring">连接字符串</param>
        /// <returns></returns>

        public static int SqlExecutNonQuery(string _sql, CommandType _type, string _constring, SqlParameter[] _parameters)
        {
            int count;
            try
            {
                using (SqlConnection _Connection = new SqlConnection(_constring))
                {
                    SqlCommand cmd = new SqlCommand(_sql, _Connection);
                    if (_parameters != null)
                    {
                        foreach (SqlParameter p in _parameters)
                        {
                            cmd.Parameters.Add(p);
                        }
                    }
                    cmd.CommandText = _sql;
                    cmd.CommandType = _type;
                    cmd.CommandTimeout = _timeout;
                    _Connection.Open();
                    count = cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("SqlExecutNonQuery", ex);
                throw;
            }
            return count;//返回受影响的行数
        }

 

posted @ 2019-02-13 10:44  老丹点赵  阅读(3163)  评论(0编辑  收藏  举报