using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; namespace DAL { public class DbHelperSQL { static string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; #region 1.0 获取 数据表 /// <summary> /// 获取 数据表 /// </summary> /// <param name="strSql"></param> /// <param name="paras"></param> /// <returns></returns> public static DataTable GetDataTable(string strSql, params SqlParameter[] paras) { using (SqlConnection conn = new SqlConnection(strConn)) { //查询少量数据时,用适配器(内部就是用 读取器 读取数据然后装入 数据集/数据表 返回) SqlDataAdapter da = new SqlDataAdapter(strSql, conn); //此时 paras 长度 >= 0,所以可以直接添加 da.SelectCommand.Parameters.AddRange(paras); //创建数据表 DataTable dt = new DataTable(); //执行查询并填充数据 da.Fill(dt); return dt; } } #endregion #region 2.0 获取读取器(读取大量数据时使用) /// <summary> /// 获取读取器(读取大量数据时使用) /// </summary> /// <param name="strSql"></param> /// <param name="paras"></param> /// <returns></returns> public static SqlDataReader ExcuteDataReader(string strSql, params SqlParameter[] paras) { //连接通道 SqlConnection conn = new SqlConnection(strConn); //打开连接通道 conn.Open(); //命令对象 SqlCommand cmd = new SqlCommand(strSql, conn); //添加参数 cmd.Parameters.AddRange(paras); //创建读取器,同时指定行为:如果读取器被关闭,会自动关闭该读取器使用的 Connection SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr; } #endregion #region 3.0执行查询语句 /// <summary> /// 执行费查询语句 /// </summary> /// <param name="strSql"></param> /// <param name="paras"></param> /// <returns></returns> public static int ExcuteNonQuery(string strSql, params SqlParameter[] paras) { using (SqlConnection conn = new SqlConnection(strConn)) { SqlCommand cmd = new SqlCommand(strSql, conn); cmd.Parameters.AddRange(paras); conn.Open(); return cmd.ExecuteNonQuery(); } } #endregion #region 4.0查询单个值 +object ExcuteScalar(string strSql, params SqlParameter[] paras) /// <summary> /// 查询单个值 /// </summary> /// <param name="strSql"></param> /// <param name="paras"></param> /// <returns></returns> public static object ExcuteScalar(string strSql, params SqlParameter[] paras) { using (SqlConnection conn = new SqlConnection(strConn)) { SqlCommand cmd = new SqlCommand(strSql, conn); cmd.Parameters.AddRange(paras); conn.Open(); return cmd.ExecuteScalar(); } } #endregion #region 5.0查询单个值(泛型版本) /// <summary> /// 查询单个值(泛型版本) /// </summary> /// <param name="strSql"></param> /// <param name="paras"></param> /// <returns></returns> public static T ExcuteScalar<T>(string strSql, params SqlParameter[] paras) { using (SqlConnection conn = new SqlConnection(strConn)) { SqlCommand cmd = new SqlCommand(strSql, conn); cmd.Parameters.AddRange(paras); conn.Open(); return (T)cmd.ExecuteScalar(); } } #endregion #region 6.0 获取 数据表(调用存储过程) /// <summary> /// 获取 数据表(调用存储过程) /// </summary> /// <param name="strProcName"></param> /// <param name="paras"></param> /// <returns></returns> public static DataTable ExcuteTableByProc(string strProcName, params SqlParameter[] paras) { using (SqlConnection conn = new SqlConnection(strConn)) { //查询少量数据时,用适配器(内部就是用 读取器 读取数据然后装入 数据集/数据表 返回) SqlDataAdapter da = new SqlDataAdapter(strProcName, conn); da.SelectCommand.CommandType = CommandType.StoredProcedure; //此时 paras 长度 >= 0,所以可以直接添加 da.SelectCommand.Parameters.AddRange(paras); //创建数据表 DataTable dt = new DataTable(); //执行查询并填充数据 da.Fill(dt); return dt; } } #endregion } }