本篇文章主要介紹了使用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); } }}