無聊的週末,學習、編碼無力。想找點事幹但又不知道乾點什麼,猛然發現本身學過的SqlHelper快忘記了。因而乎虎軀一震心想怎能如此墮落下去,立馬打開電腦,雙手摸上鍵盤。寫下此文做爲學習過程當中的複習,並分享出知識(順便打發時間-^.^-)。sql
下面開始正文數據庫
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 }
夜已深,晚安。
2017-9-17 23:18