一步一步写自己的SqlHelper类库
前言:
一開始不懂SqlHelper是什么,以為是新東西。第一遍大量的查資料,在csdn上找到很多人寫好的SqlHelper類,發現每個人寫的很像,但又都不一樣,找了一個能用的上的,敲了一遍別人的代碼,中間遇到很多不懂的語句,一點點的摳。整體下來,還是很朦朧!
后來,查到這個系列博客,打通了在SqlHelper的認知全貌!
ADO.net是.NET?平臺的數據訪問編程模型。由于存在多種數據庫,為了能夠用統一訪問各種數據庫,出現ADO.Net
連接不同的數據庫,要引用對應的類庫
每種對應類庫中都有四個核心對象:很像老鼠偷玉米的過程
Connection:連接數據庫------------老鼠隊伍的先鋒部隊負責找到玉米地
Command:在數據庫中查詢----------老鼠隊伍的主力部隊負責將玉米棒子從植物上掰下來
DataAdapter:建立數據庫與顯示數據對象之間的橋梁-----------老鼠隊伍的運輸部隊將玉米運回洞里的糧倉里
DataSet:將數據拿出來放到用戶看的見的外觀空間里-----------老鼠隊伍的后勤部隊將糧倉里玉米做熟了分給各個小老鼠
增加了SQLhelper作用:將所有關于數據庫的操作單獨寫一個類中,在走不同的業務時都通過調用這個類來訪問數據庫,提高代碼的復用性。SQLhelper是一個組件!
在C#中有組件和控件
控件:可視化對象(比如用戶名的輸入框,密碼輸入框)--------控件的面對對象是人
組件:是對象,需要容器(比如SqlHelper類庫)-------------------組件的面對對象是編程中的代碼
編寫滿足機房用的SqlHelper類
namespace MySqlHelper
{/// <summary>/// SqlHelper create by zhaofen 2018-8-29/// </summary>class SqlHelper{private string strConn = null;private SqlConnection Conn = null;private SqlCommand Cmd = null;private SqlDataReader SqlSdr = null;public SqlHelper(){//利用反射連接數據庫strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;//strConn = "Data Source=Rancho; Initial Catalog=charge_sys;User Id=sa;Password=123456";Conn = new SqlConnection(strConn);}/// <summary>/// 打開數據庫/// </summary>/// <returns>sqlConnection</returns>private SqlConnection GetConn(){if (Conn.State != ConnectionState.Open){try{Conn.Open();}catch (Exception ex){Conn.Dispose();//沒有成功打開,釋放掉資源,不能不成功還占用資源throw new Exception("打開數據庫失敗!" + ex.Message);}}return Conn;}/// <summary>/// 執行不帶參數的增刪改操作/// </summary>/// <param name="CmdText">執行的SQL語句或存儲過程</param>/// <param name="CmdType">語句類型</param>/// <returns>返回增刪改的操作數</returns>public int ExecuteNonQuery(string CmdText,CommandType CmdType){//數據庫連接語句int res;try{Cmd = new SqlCommand(CmdText, GetConn());Cmd.CommandType = CmdType;res = Cmd.ExecuteNonQuery();}catch (Exception ex){throw ex;}finally{if (Conn.State==ConnectionState.Open){Conn.Close();}}return res;}/// <summary>/// 執行帶參數的增刪改操作/// </summary>/// <param name="CmdText">執行的SQL語句或存儲過程</param>/// <param name="parameters">參數</param>/// <param name="CmdType">(SQL語句或存儲過程)的類型</param>/// <returns>返回增刪改的操作數(受影響的行數)</returns>public int ExecuteNonQuery(string CmdText,SqlParameter[] parameters,CommandType CmdType){int res;try{Cmd = new SqlCommand(CmdText, GetConn()); //先建立SQL語句Cmd.Parameters.AddRange(parameters); //再匹配參數Cmd.CommandType = CmdType;res = Cmd.ExecuteNonQuery();}catch (Exception ex){throw ex;}finally{if (Conn.State == ConnectionState.Open){Conn.Close();}}return res;}/// <summary>/// 執行不帶參數的查詢操作/// </summary>/// <param name="CmdText">執行的SQL語句或存儲過程</param>/// <param name="CmdType">(SQL語句或存儲過程)類型</param>/// <returns>查詢后的數據</returns>public DataTable ExecuteQuery(string CmdText,CommandType CmdType){DataTable dt = new DataTable();using (SqlSdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection)){Cmd = new SqlCommand(CmdText, GetConn());Cmd.CommandType = CmdType;dt.Load(SqlSdr);}return dt;}/// <summary>/// 執行帶參數的查詢/// </summary>/// <param name="CmdText">執行的SQL語句或存儲過程</param>/// <param name="parameters">(SQL語句或存儲過程)類型</param>/// <param name="CmdType"></param>/// <returns>查詢后的數據</returns>public DataTable ExecuteQuery(string CmdText,SqlParameter[] parameters, CommandType CmdType){DataTable dt = new DataTable();using (SqlSdr=Cmd.ExecuteReader(CommandBehavior.CloseConnection)){Cmd = new SqlCommand(CmdText, GetConn());Cmd.Parameters.AddRange(parameters);Cmd.CommandType = CmdType;dt.Load(SqlSdr);}return dt;}}
}
參考資料
一步步寫自己SqlHelper類庫(一):ADO.NET簡介
一步步寫自己SqlHelper類庫(二):.NET Framework 數據提供程序
一步步寫自己SqlHelper類庫(三):連接字符串
一步步寫自己SqlHelper類庫(四):Connection對象
一步步寫自己SqlHelper類庫(五):Command對象
一步步寫自己SqlHelper類庫(六):DataAdapter對象
一步步寫自己SqlHelper類庫(七):DataSet對象
ADO.NET(完整修改和查詢、實體類,數據訪問類)
總結
以上是生活随笔為你收集整理的一步一步写自己的SqlHelper类库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构】查找
- 下一篇: System.Data.SqlClien