C# WPF 快速开发数据库封装类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];

                }

            }

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值