使用 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;//返回受影響的行數
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM