A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

      首先,要会使用配置文件,项目点右键-->添加-->新建项-->应用程序配置文件,名称一定要写成App.config,然后在引用点右键-->添加引用-->在.NET一栏里找到System.configuration点击确定,这样就设置完了,然后打开配置文件写上
  <connectionStrings>
    <add name="dbConnStr" connectionString="Data Source=服务器名/实例名;Initial Catalog=数据库名;User ID=用户名;Password=密码"/>
  </connectionStrings>
其次,项目点右键-->添加-->类,名字SqlHelper,建好类后,下面给一段我自学之后自己写的代码
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();
        //        }
        //    }
        //}
        ////DataSet只用来查询结果比较少的sql
        //public static DataSet ExecuteDataSet(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;
        //        }
        //    }
        //}
        ////上面的方法和下面的方法比较,下面的更简单一点,直接简化到DataTable,因为一般查询有且只有一个表
        //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);
        //            //}
        //            //用AddRange直接代替了foreach的遍历
        //            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();
        //        }
        //    }
        //}
        ////DataSet只用来查询结果比较少的sql
        //public static DataSet ExecuteDataSet(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;
        //        }
        //    }
        //}
        ////上面的方法和下面的方法比较,下面的更简单一点,直接简化到DataTable,因为一般查询有且只有一个表
        //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);
                    //}
                    //用AddRange直接代替了foreach的遍历
                    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();
                }
            }
        }
        //DataSet只用来查询结果比较少的sql
        public static DataSet ExecuteDataSet(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;
                }
            }
        }
        //上面的方法和下面的方法比较,下面的更简单一点,直接简化到DataTable,因为一般查询有且只有一个表
        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];
                }
            }
        }
    }
}
我以上写了3种方法,大家可以看后进行比较一下,调用的时候就直接SqlHelper.方法名(Sql语句,new SqlParameter()......)

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

4 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
这家伙不简单
回复 使用道具 举报
了解一下,有备无患!
回复 使用道具 举报
每次条用这个SqlHelper就出跳出bug提示说:你的类型初始值有误....弄了很长时间,到现在还没解决好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马