C#編寫SqlHelper類的使用詳解

來源:互聯網
上載者:User
本篇文章主要介紹了使用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指令碼,parameters:需要的參數集合

該方法主要是用於執行,刪除、更新和插入操作,返回受影響的行數。

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

參數說明:如上。

該方法的傳回值第object,所以當我們查詢的資料不知道是什麼類型的時候可以使用該類。

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);     }  }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.