Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung der SqlHelper-Klasse zum Schreiben in C#

Detaillierte Erläuterung der Verwendung der SqlHelper-Klasse zum Schreiben in C#

黄舟
黄舟Original
2017-09-18 11:25:293056Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung von C# zum Schreiben der SqlHelper-Klasse vorgestellt. Der Herausgeber findet es ziemlich gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber und werfen wir einen Blick darauf

Langweiliges Wochenende, nicht in der Lage zu lernen und zu programmieren. Ich wollte etwas finden, was ich tun sollte, wusste aber plötzlich, dass ich den SqlHelper, den ich gelernt hatte, fast vergessen hatte. Dann zitterte der Körper des Tigers und er dachte, wie konnte er so tief sinken? Er schaltete sofort den Computer ein und berührte die Tastatur mit beiden Händen. Ich habe diesen Artikel als Rezension während des Lernprozesses und um das Wissen zu teilen (übrigens um die Zeit totzuschlagen -^.^-) geschrieben.

Der Text beginnt unten

Hier nehmen wir das Konsolenprogramm als Beispiel. Zuerst müssen wir die Verbindungszeichenfolge zur Datei app.config hinzufügen:


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

1 Erstellen Sie einen Namen für die SqlHepler-Klasse und erstellen Sie dann eine Methode, um die in der Datei app.config konfigurierte Verbindungszeichenfolge abzurufen.


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

2. Kapseln wir die erste SqlHepler-Methode, kapseln ein ausgeführtes SQL und geben die Anzahl der betroffenen Zeilen zurück.


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

Parameterbeschreibung: sqlText: das auszuführende SQL-Skript, Parameter: der erforderliche Parametersatz

Diese Methode ist Hauptsächlich verwendet: Führt Lösch-, Aktualisierungs- und Einfügevorgänge aus und gibt die Anzahl der betroffenen Zeilen zurück.

3. Kapseln Sie weiterhin einen Abfragevorgang und geben Sie den Wert der ersten Zeile und der ersten Spalte im Abfrageergebnis zurück


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

Parameterbeschreibung: Wie oben.

Der Rückgabewert dieser Methode ist Objekt, sodass wir diese Klasse verwenden können, wenn wir nicht wissen, welche Art von Daten wir abfragen.

4. Kapseln Sie eine allgemeine Abfragemethode und geben Sie eine Datentabelle zurück


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

Parameterbeschreibung: wie oben.

Diese Methode wird hauptsächlich für einige Abfragedaten verwendet, die mit den abgefragten Daten gefüllt werden und dann die Daten zurückgeben.

5. Schreiben und kapseln Sie abschließend eine Abfragemethode, die einen SqlDataReader-Typ zurückgibt.


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

Parameterbeschreibung: Immer noch wie oben.

Das von dieser Methode zurückgegebene Objekt vom Typ SqlDataReader muss immer das Objekt SqlConnection verwenden und kann daher nicht freigegeben werden. Diese Art von Daten wird Zeile für Zeile gelesen. Beim Lesen wird die Read()-Methode dieser Klasse verwendet, um festzustellen, ob die Daten leer sind (d. h. ob die letzte Zeile gelesen wurde).

Als Anfänger habe ich dieses Mal nur eine kurze Einführung gegeben und die SqlHepler-Klasse überprüft.

Fügen Sie alle Codes bei:


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

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der SqlHelper-Klasse zum Schreiben in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn