C#中SqlHelper类封装及调用

在AppConfig.cs增加DataSouce连接字符串(SQL Server):

  <connectionStrings>
    <add name="sql" connectionString="server=127.0.0.1;database=Test;uid=root;pwd=root;"/>
  </connectionStrings>

SqlHelper类:

using实质:在程序编译阶段,编译器会自动将using语句生成为try-finally语句,并在finally块中调用对象的Dispose方法,来清理资源。所以,using语句等效于try-finally语句。

using (Font f2 = new Font("Arial", 10, FontStyle.Bold))
{
     font2.F();
}

被编译器翻译为:
     Font f2 = new Font("Arial", 10, FontStyle.Bold);
  try
  {
      font2.F();

  }
  finally
  {
      if (f2 != null) ((IDisposable)f2).Dispose();
  }

不要在外部实例,会存在一些问题。

Font f2 = new Font("Arial", 10, FontStyle.Bold)

using ( f2 )
{
     font2.F();
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;//Configuration表面配置,组态,构造

namespace BookDemo
{
    class sqlHelper
    {
        public static string GetSqlConnectionString()
        {
            return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
        }
        //适合增删改操作,返回影响条数
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {  
            using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
            {
                using (SqlCommand comm = conn.CreateCommand())
                {
                    conn.Open();
                    comm.CommandText = sql;
                    comm.Parameters.AddRange(parameters);
                    return comm.ExecuteNonQuery();
                }
            }
        }
        //查询操作,返回查询结果中的第一行第一列的值
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
            {
                using (SqlCommand comm = conn.CreateCommand())
                {
                    conn.Open();
                    comm.CommandText = sql;
                    comm.Parameters.AddRange(parameters);
                    return comm.ExecuteScalar();
                }
            }
        }
        //Adapter调整,查询操作,返回DataTable
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, GetSqlConnectionString()))
            {
                DataTable dt = new DataTable();
                adapter.SelectCommand.Parameters.AddRange(parameters);
                adapter.Fill(dt);
                return dt;
            }
        }

        public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters)
        {
            //SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态
            SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还需要连接打开状态
            SqlCommand cmd = conn.CreateCommand();
            conn.Open();
            cmd.CommandText = sqlText;
            cmd.Parameters.AddRange(parameters);
            //CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
    }
}

 测试调用:

            string sql = "select * from Julius_Goods where name = @name";
            DataTable dt = null;
            dt = sqlHelper.ExecuteDataTable(sql,new SqlParameter("@name", "aqq"));
            dataGridView1.DataSource = dt;

猜你喜欢

转载自www.cnblogs.com/jssyzlm/p/9862281.html