c#簡單的SQLHelp

public abstract class SQLHelper
    {
        //只讀的靜態數據庫鏈接字符串
        //需添加引用System.Configuration;
        public static readonly string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        //public static readonly string connString = "server=.;database=Weight;uid=sa;pwd=1";

        #region 執行 增 刪 改
        /// <summary>
        /// 執行 增 刪 改
        /// </summary>
        /// <param name="sql">要執行的SQL</param>
        /// <param name="param">參數</param>
        /// <returns>影響行數</returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] param)
        {
            //實例化鏈接對象,並指定鏈接字符串,自動釋放資源,不用關閉
            using (SqlConnection conn = new SqlConnection(connString))
            {
                //實例化命令對象,指定sql,與鏈接對象
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    //若是有參數
                    if (param != null)
                    {
                        //批量添加參數
                        cmd.Parameters.AddRange(param);
                    }
                    //打開鏈接
                    conn.Open();
                    //執行sql並返回影響行數
                    return cmd.ExecuteNonQuery();
                }
            }
        }

        /// <summary>
        /// 返回首行首列對象
        /// </summary>
        /// <param name="sql">要執行的SQL</param>
        /// <param name="param">參數</param>
        /// <returns>首行首列對象</returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] param)
        {
            //實例化鏈接對象,並指定鏈接字符串,自動釋放資源,不用關閉
            using (SqlConnection conn = new SqlConnection(connString))
            {
                //實例化命令對象,指定sql,與鏈接對象
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    //若是有參數
                    if (param != null)
                    {
                        //批量添加參數
                        cmd.Parameters.AddRange(param);
                    }
                    //打開鏈接
                    conn.Open();
                    //執行sql並返回影響行數
                    return cmd.ExecuteScalar();
                }
            }
        }
        #endregion

        #region 執行 查詢
        /// <summary>
        /// 執行 查詢
        /// </summary>
        /// <param name="sql">要執行的SQL</param>
        /// <param name="param">參數</param>
        /// <returns>數據集</returns>
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] param)
        {
            //實例化鏈接對象,並指定鏈接字符串
            SqlConnection conn = new SqlConnection(connString);
            //實例化命令對象,指定sql,與鏈接對象
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                //若是有參數
                if (param != null)
                {
                    //批量添加參數
                    cmd.Parameters.AddRange(param);
                }
                //打開鏈接
                conn.Open();
                //執行sql並返回一個只進只讀保持SQL鏈接的結果集,若是將返回的SqlDataReader關閉時也將關閉鏈接
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
        }
        #endregion

        #region 完成數據的查詢,返回DataTable
        /// <summary>
        /// 完成數據的查詢,返回DataTable
        /// </summary>
        /// <param name="sql">要執行的sql</param>
        /// <param name="param">參數</param>
        /// <returns>DataTable</returns>
        public static DataTable GetTable(string sql, params SqlParameter[] param)
        {
            //實例化鏈接對象,並指定鏈接字符串,自動釋放資源,不用關閉
            using (SqlConnection conn = new SqlConnection(connString))
            {
                //數據適配器
                SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
                if (param != null)
                {
                    //批量添加參數
                    adp.SelectCommand.Parameters.AddRange(param);
                }
                //填充並返回數據表
                DataTable dt = new DataTable();
                adp.Fill(dt);
                return dt;
            }
        }
        #endregion

        #region 根據sql得到List集合
        /// <summary>
        /// 根據sql得到List集合
        /// </summary>
        public static List<T> GetList<T>(String sql, params SqlParameter[] param)
            where T : class,new()
        {
            List<T> entities = new List<T>();

            using (SqlDataReader sdr = SQLHelper.ExecuteReader(sql))
            {
                while (sdr.Read())
                {
                    T entity = new T();
                    //得到當前實體類型信息
                    Type type = typeof(T);
                    //遍歷結果集中的每一列
                    for (int i = 0; i < sdr.FieldCount; i++)
                    {
                        //得到列名
                        String columnName = sdr.GetName(i);
                        //根據列名取得屬性信息
                        PropertyInfo property = type.GetProperty(columnName);
                        //若是當前列的值爲null則跳過
                        if (!(sdr.GetValue(i) is DBNull))
                        {
                            //給屬性賦值
                            property.SetValue(entity, sdr.GetValue(i), null);
                        }
                    }
                    entities.Add(entity);
                }
            }

            return entities;
        }
        #endregion
    }
相關文章
相關標籤/搜索