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

    }
}

 

posted on 2014-04-26 16:06  CodeBase  阅读(453)  评论(0编辑  收藏  举报