使用C#編寫SqlHelper類

無聊的週末,學習、編碼無力。想找點事幹但又不知道乾點什麼,猛然發現本身學過的SqlHelper快忘記了。因而乎虎軀一震心想怎能如此墮落下去,立馬打開電腦,雙手摸上鍵盤。寫下此文做爲學習過程當中的複習,並分享出知識(順便打發時間-^.^-)。sql

下面開始正文數據庫

這裏以控制檯程序爲案例。首先咱們須要先配置一下鏈接字符串,咱們須要在app.config文件中增長以下節點:

1   <connectionStrings>
2     <add name="Sql" connectionString="server=數據庫地址;uid=用戶名;pwd=密碼;database=數據庫名"/>
3   </connectionStrings>

1.接着須要建立一個名爲SqlHepler類,而後建立一個方法來獲取app.config文件中配置的鏈接字符串。app

1 public static string GetSqlConnectionString()
2 {
3     return ConfigurationManager.
4         ConnectionStrings["Sql"].ConnectionString;
5 }

2.下面來封裝第一個SqlHepler方法,封裝一個執行的sql 返回受影響的行數。ide

 1 public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters)
 2 {
 3      using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))  
 4      {
 5           using (SqlCommand cmd=conn.CreateCommand())
 6           {
 7               conn.Open();  //打開數據庫  8               cmd.CommandText = sqlText;  //對CommandText進行賦值  9               cmd.Parameters.AddRange(parameters);  //對數據庫使用參數進行賦值 10               return cmd.ExecuteNonQuery();
11           }
12       }
13 }

參數說明:sqlText:須要執行的sql腳本,parameters:須要的參數集合學習

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

3.繼續封裝一個查詢操做,返回查詢結果中的第一行第一列的值編碼

 

 1 public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
 2{
 3    using (SqlConnection conn=new SqlConnection(GetSqlConnectionString()))
 4    {
 5       using (SqlCommand cmd=conn.CreateCommand())
 6       {
 7           conn.Open();
 8           cmd.CommandText = sqlText;
 9           cmd.Parameters.AddRange(parameters);
10           return cmd.ExecuteScalar();
11       }
12     }
13}

 

參數說明:如上。spa

該方法的返回值第object,因此當咱們查詢的數據不知道是什麼類型的時候可使用該類。code

4.在封裝個經常使用的查詢方法,返回一個DataTable
server

 1 public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) 
 2{
 3     using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString()))
 4     {
 5         DataTable dt = new DataTable();
 6         adapter.SelectCommand.Parameters.AddRange(parameters);
 7         adapter.Fill(dt);
 8         return dt;
 9      }
10}

參數說明:如上。

 該方法主要用於一些查詢數據,dt將被填充查詢出來的數據,而後返回數據。

5.最後在寫封裝一個查詢方法,該方法返回的是一個SqlDataReader類型

 1 public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters)
 2 {
 3       //SqlDataReader要求,它讀取數據的時候有,它獨佔它的SqlConnection對象,並且SqlConnection必須是Open狀態
 4       SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要釋放鏈接,由於後面還須要鏈接打開狀態
 5       SqlCommand cmd = conn.CreateCommand();
 6       conn.Open();
 7       cmd.CommandText = sqlText;
 8       cmd.Parameters.AddRange(parameters);
 9       //CommandBehavior.CloseConnection當SqlDataReader釋放的時候,順便把SqlConnection對象也釋放掉
10       return cmd.ExecuteReader(CommandBehavior.CloseConnection);  
11 }

參數說明:依舊如上。

該方法返回的SqlDataReader 類型對象須要一直使用SqlConnection對象,因此不能釋放。該類型讀取數據是一行一行的讀取。讀取使用的是該類的Read()方法,返回值爲bool判斷數據是否爲空(也就是是否讀取到最後一行),該方法將自動讀取下到下一條記錄。

做爲一個初學者,本次只是簡單的介紹,並複習了一下SqlHepler類。

附上所有代碼:

 1 using System.Configuration;
 2 using System.Data;
 3 using System.Data.SqlClient;
 4 
 5 namespace UserInfoMgr
 6 {
 7     class SqlHelper
 8     {
 9         /// <summary>
10         /// 獲取鏈接字符串
11         /// </summary>
12         /// <returns>鏈接字符串</returns>
13         public static string GetSqlConnectionString()
14         {
15             return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
16         }
17 
18         /// <summary>
19         /// 封裝一個執行的sql 返回受影響的行數
20         /// </summary>
21         /// <param name="sqlText">執行的sql腳本</param>
22         /// <param name="parameters">參數集合</param>
23         /// <returns>受影響的行數</returns>
24         public static int ExecuteNonQuery(string sqlText,params SqlParameter[] parameters)
25         {
26             using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
27             {
28                 using (SqlCommand cmd=conn.CreateCommand())
29                 {
30                     conn.Open();
31                     cmd.CommandText = sqlText;
32                     cmd.Parameters.AddRange(parameters);
33                     return cmd.ExecuteNonQuery();
34                 }
35             }
36         }
37 
38         /// <summary>
39         /// 執行sql,返回查詢結果中的第一行第一列的值
40         /// </summary>
41         /// <param name="sqlText">執行的sql腳本</param>
42         /// <param name="parameters">參數集合</param>
43         /// <returns>查詢結果中的第一行第一列的值</returns>
44         public static object ExecuteScalar(string sqlText, params SqlParameter[] parameters)
45         {
46             using (SqlConnection conn=new SqlConnection(GetSqlConnectionString()))
47             {
48                 using (SqlCommand cmd=conn.CreateCommand())
49                 {
50                     conn.Open();
51                     cmd.CommandText = sqlText;
52                     cmd.Parameters.AddRange(parameters);
53                     return cmd.ExecuteScalar();
54                 }
55             }
56         }
57 
58         /// <summary>
59         /// 執行sql 返回一個DataTable
60         /// </summary>
61         /// <param name="sqlText">執行的sql腳本</param>
62         /// <param name="parameters">參數集合</param>
63         /// <returns>返回一個DataTable</returns>
64         public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] parameters) 
65         {
66             using (SqlDataAdapter adapter =new SqlDataAdapter(sqlText,GetSqlConnectionString()))
67             {
68                 DataTable dt = new DataTable();
69                 adapter.SelectCommand.Parameters.AddRange(parameters);
70                 adapter.Fill(dt);
71                 return dt;
72             }
73         }
74 
75         /// <summary>
76         /// 執行sql腳本
77         /// </summary>
78         /// <param name="sqlText">執行的sql腳本</param>
79         /// <param name="parameters">參數集合</param>
80         /// <returns>返回一個SqlDataReader</returns>
81         public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters)
82         {
83             //SqlDataReader要求,它讀取數據的時候有,它獨佔它的SqlConnection對象,並且SqlConnection必須是Open狀態
84             SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要釋放鏈接,由於後面還須要鏈接打開狀態
85             SqlCommand cmd = conn.CreateCommand();
86             conn.Open();
87             cmd.CommandText = sqlText;
88             cmd.Parameters.AddRange(parameters);
89             //CommandBehavior.CloseConnection當SqlDataReader釋放的時候,順便把SqlConnection對象也釋放掉
90             return cmd.ExecuteReader(CommandBehavior.CloseConnection);  
91         }
92     }
93 }
View Code

夜已深,晚安。

 2017-9-17 23:18

相關文章
相關標籤/搜索