這篇文章主要介紹了使用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); } } }
以上是C#編寫SqlHelper類別的使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!