C# WPF 快速开发09数据库封装类SqlHelper

//深入视频没下载完成没看,直接拿老师的代码贴上来了

//相应的有CommonHelper,将程序大多UI窗口用到的方法放到里面去。

//后话:这里有三个版本的SqlHelper

第一个版本只能传递”sql语句”参数,简单,但无法抵挡sql注入攻击

第二个版本还可以传递SqlParameter数组参数,即可以传递不确定个数的参数进来(当然第一个参数必须确定得是sql语句参数)。但在使用过程中比较麻烦,比较给参数New一个SqlParameter对象存入参数值。

第三个版本在第二个版本的基础上,是SqlHelper使用变得简单,可以直接传入数值,而不是SqlParameter对象。主要应用这个params咚咚,没深入学过C#,不懂这个咚咚,说是长度可变变量。

using System; 

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

namespace ADONET2

{

    class SqlHelper

    {

        private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;

        //封装方法原则:把不变的放到方法,把变化的放到参数中

        ////public static int ExecuteNonQuery(string sql)

        ////{

        ////    using (SqlConnection conn = new SqlConnection(connStr))

        ////    {

        ////        conn.Open();

        ////        using (SqlCommand cmd = conn.CreateCommand())

        ////        {

        ////            cmd.CommandText = sql;

        ////            return cmd.ExecuteNonQuery();

        ////        }

        ////    }

        ////}

        ////public static object ExecuteScalar(string sql)

        ////{

        ////    using (SqlConnection conn = new SqlConnection(connStr))

        ////    {

        ////        conn.Open();

        ////        using (SqlCommand cmd = conn.CreateCommand())

        ////        {

        ////            cmd.CommandText = sql;

        ////            return cmd.ExecuteScalar();

        ////        }

        ////    }

        ////}

        //////只用来执行查询结果比较少的sql

        ////public static DataTable ExecuteDataTable(string sql)

        ////{

        ////    using (SqlConnection conn = new SqlConnection(connStr))

        ////    {

        ////        conn.Open();

        ////        using (SqlCommand cmd = conn.CreateCommand())

        ////        {

        ////            cmd.CommandText = sql;

        ////            SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        ////            DataSet dataset = new DataSet();

        ////            adapter.Fill(dataset);

        ////            return dataset.Tables[0];

        ////        }

        ////    }

        ////}

        //第二版

        //public static int ExecuteNonQuery(string sql,SqlParameter[] parameters)

        //{

        //    using (SqlConnection conn = new SqlConnection(connStr))

        //    {

        //        conn.Open();

        //        using (SqlCommand cmd = conn.CreateCommand())

        //        {

        //            cmd.CommandText = sql;

        //            //foreach (SqlParameter param in parameters)

        //            //{

        //            //    cmd.Parameters.Add(param);

        //            //}

        //            cmd.Parameters.AddRange(parameters);

        //            return cmd.ExecuteNonQuery();

        //        }

        //    }

        //}

        //public static object ExecuteScalar(string sql,SqlParameter[] parameters)

        //{

        //    using (SqlConnection conn = new SqlConnection(connStr))

        //    {

        //        conn.Open();

        //        using (SqlCommand cmd = conn.CreateCommand())

        //        {

        //            cmd.CommandText = sql;

        //            cmd.Parameters.AddRange(parameters);

        //            return cmd.ExecuteScalar();

        //        }

        //    }

        //}

        ////只用来执行查询结果比较少的sql

        //public static DataTable ExecuteDataTable(string sql, SqlParameter[] parameters)

        //{

        //    using (SqlConnection conn = new SqlConnection(connStr))

        //    {

        //        conn.Open();

        //        using (SqlCommand cmd = conn.CreateCommand())

        //        {

        //            cmd.CommandText = sql;

        //            cmd.Parameters.AddRange(parameters);

        //            SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        //            DataSet dataset = new DataSet();

        //            adapter.Fill(dataset);

        //            return dataset.Tables[0];

        //        }

        //    }

        //}

        //第三版:使用长度可变参数来简化

        public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)

        {

            using (SqlConnection conn = new SqlConnection(connStr))

            {

                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())

                {

                    cmd.CommandText = sql;

                    //foreach (SqlParameter param in parameters)

                    //{

                    //    cmd.Parameters.Add(param);

                    //}

                    cmd.Parameters.AddRange(parameters);

                    return cmd.ExecuteNonQuery();

                }

            }

        }

        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)

        {

            using (SqlConnection conn = new SqlConnection(connStr))

            {

                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())

                {

                    cmd.CommandText = sql;

                    cmd.Parameters.AddRange(parameters);

                    return cmd.ExecuteScalar();

                }

            }

        }

        //只用来执行查询结果比较少的sql

        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)

        {

            using (SqlConnection conn = new SqlConnection(connStr))

            {

                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())

                {

                    cmd.CommandText = sql;

                    cmd.Parameters.AddRange(parameters);

                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);

                    DataSet dataset = new DataSet();

                    adapter.Fill(dataset);

                    return dataset.Tables[0];

                }

            }

        }

    }

}

你可能感兴趣的:(C#)