zoukankan      html  css  js  c++  java
  • 使用 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;//返回受影响的行数
            }
  • 相关阅读:
    Vue学录 (第三章)
    Vue学录 (第二章)
    Vue 学录 (第一章)
    SpringBoot 学集 (第七章) 数据访问
    Leetcode789 阻碍逃脱者 曼哈顿距离
    Leetcode707 设计链表 双向链表实现
    leetcode 743 网络延迟时间 Dijkstra算法
    Leetcode676 实现魔法字典
    Leetcode443 压缩字符串 双指针原地压缩算法
    Leetcode23 合并K个升序链表
  • 原文地址:https://www.cnblogs.com/daniel-niu/p/10368570.html
Copyright © 2011-2022 走看看