封裝了兩個方法,返回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;//返回受影響的行數 }