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