>  기사  >  백엔드 개발  >  C#에서 SqlHelper 클래스 작성 사용에 대한 자세한 설명

C#에서 SqlHelper 클래스 작성 사용에 대한 자세한 설명

黄舟
黄舟원래의
2017-09-18 11:25:293058검색

이 글에서는 주로 C#을 사용하여 SqlHelper 클래스를 작성하는 방법을 소개합니다. 편집자는 이것이 꽤 좋다고 생각하므로 지금 공유하고 참고용으로 제공하겠습니다. 에디터 따라가서 살펴볼까요

공부도 코딩도 할 수 없는 지루한 주말입니다. 뭔가 할 일을 찾고 싶었지만 무엇을 해야 할지 몰랐습니다. 갑자기 배운 SqlHelper를 거의 잊어버렸다는 것을 깨달았습니다. 그러다가 호랑이의 몸이 떨렸고 어떻게 자신이 이렇게 낮게 가라앉을 수 있는지 생각했습니다. 그는 즉시 컴퓨터를 켜고 양손으로 키보드를 만졌습니다. 이 글은 학습 과정 중 리뷰와 지식을 공유하기 위해 작성했습니다(시간 죽이기-^.^-).

본문을 시작하겠습니다

여기서는 콘솔 프로그램을 예로 들어보겠습니다. 먼저 연결 문자열을 구성해야 합니다. app.config 파일에


<connectionStrings>
   <add name="Sql" connectionString="server=数据库地址;uid=用户名;pwd=密码;database=数据库名"/>
  </connectionStrings>

1 노드를 추가해야 합니다. 그런 다음 SqlHepler라는 클래스를 만든 다음, app.config 파일에 구성된 연결 문자열입니다.


public static string GetSqlConnectionString()
 {
   return ConfigurationManager.
     ConnectionStrings["Sql"].ConnectionString;
 }

2. 첫 번째 SqlHepler 메서드를 캡슐화하고 실행된 SQL을 캡슐화한 후 영향을 받은 행 수를 반환해 보겠습니다.


 public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters)
{
   using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))  
   {
     using (SqlCommand cmd=conn.CreateCommand())
     {
       conn.Open();  //打开数据库
       cmd.CommandText = sqlText;  //对CommandText进行赋值
       cmd.Parameters.AddRange(parameters);  //对数据库使用参数进行赋值
       return cmd.ExecuteNonQuery();
     }
   }
}

매개변수 설명: sqlText: 실행해야 하는 sql 스크립트, 매개변수: 필수 매개변수 세트

이 메서드는 주로 삭제, 업데이트 및 삽입 작업을 수행하고 영향을 받은 행 수를 반환하는 데 사용됩니다.

3. 계속해서 쿼리 작업을 캡슐화하고 쿼리 결과의 첫 번째 행과 첫 번째 열의 값을 반환합니다


public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
 {
  using (SqlConnection conn=new SqlConnection(GetSqlConnectionString()))
  {
   using (SqlCommand cmd=conn.CreateCommand())
   {
     conn.Open();
     cmd.CommandText = sqlText;
     cmd.Parameters.AddRange(parameters);
     return cmd.ExecuteScalar();
   }
  }
}

매개변수 설명: 위와 같습니다.

이 메서드의 반환 값은 객체이므로 쿼리하는 데이터 유형이 무엇인지 모를 때 이 클래스를 사용할 수 있습니다.

4. 일반적으로 사용되는 쿼리 메서드를 캡슐화하고 DataTable


public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) 
 {
  using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString()))
  {
    DataTable dt = new DataTable();
    adapter.SelectCommand.Parameters.AddRange(parameters);
    adapter.Fill(dt);
    return dt;
   }
}

매개변수 설명을 반환합니다.

이 방법은 주로 일부 쿼리 데이터에 사용됩니다. dt는 쿼리된 데이터로 채워지고 데이터가 반환됩니다.

5. 마지막으로 SqlDataReader 유형


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); 
}

을 반환하는 쿼리 메서드를 작성하고 캡슐화합니다. 매개변수 설명: 여전히 위와 같습니다.

이 메서드에서 반환된 SqlDataReader 형식 개체는 항상 SqlConnection 개체를 사용해야 하므로 해제할 수 없습니다. 이 유형의 데이터는 한 줄씩 읽혀집니다. 읽기는 이 클래스의 Read() 메서드를 사용하여 데이터가 비어 있는지(즉, 마지막 행을 읽었는지 여부)를 결정하는 bool입니다.

초보자로서 이번에는 간단하게 소개하고 SqlHepler 클래스를 리뷰해봤습니다.

첨부된 모든 코드는 다음과 같습니다:


using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace UserInfoMgr
{
  class SqlHelper
  {
    /// <summary>
    /// 获取连接字符串
    /// </summary>
    /// <returns>连接字符串</returns>
    public static string GetSqlConnectionString()
    {
      return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
    }

    /// <summary>
    /// 封装一个执行的sql 返回受影响的行数
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>受影响的行数</returns>
    public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters)
    {
      using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
      {
        using (SqlCommand cmd=conn.CreateCommand())
        {
          conn.Open();
          cmd.CommandText = sqlText;
          cmd.Parameters.AddRange(parameters);
          return cmd.ExecuteNonQuery();
        }
      }
    }

    /// <summary>
    /// 执行sql,返回查询结果中的第一行第一列的值
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>查询结果中的第一行第一列的值</returns>
    public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
    {
      using (SqlConnection conn=new SqlConnection(GetSqlConnectionString()))
      {
        using (SqlCommand cmd=conn.CreateCommand())
        {
          conn.Open();
          cmd.CommandText = sqlText;
          cmd.Parameters.AddRange(parameters);
          return cmd.ExecuteScalar();
        }
      }
    }

    /// <summary>
    /// 执行sql 返回一个DataTable
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>返回一个DataTable</returns>
    public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) 
    {
      using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString()))
      {
        DataTable dt = new DataTable();
        adapter.SelectCommand.Parameters.AddRange(parameters);
        adapter.Fill(dt);
        return dt;
      }
    }

    /// <summary>
    /// 执行sql脚本
    /// </summary>
    /// <param name="sqlText">执行的sql脚本</param>
    /// <param name="parameters">参数集合</param>
    /// <returns>返回一个SqlDataReader</returns>
    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); 
    }
  }
}

위 내용은 C#에서 SqlHelper 클래스 작성 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.