1. 程式人生 > >簡單的SqlHelper

簡單的SqlHelper

throw ble 讀取 pen 關聯 avi sql語句 manager adapter

現在網上還有教科書上面的SQlHelper很多都沒有關閉連接和釋放資源,使得在開發項目的時候,網站的反應越來越慢,最終導致崩潰。

現在我推出的這個SQlHelper使用了Using來自動釋放資源,無需我們手動釋放。

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Configuration;
  4 using System.Data;
  5 using System.Data.SqlClient;
  6 using System.Linq;
  7 using System.Text;
  8
using System.Threading.Tasks; 9 10 namespace DAL 11 { 12 public static class SqlHelper 13 { 14 //定義一個連接字符串 15 //readonly修飾的變量,只能在初始化的時候復制,以及在構造函數中賦值,其他地方只能讀取不能設置值 16 private static readonly string conStr = ConfigurationManager.ConnectionStrings[""].ConnectionString;
17 /// <summary> 18 /// ExecuteNonQuery 19 /// </summary> 20 /// <param name="sql">要執行的語句/param> 21 /// <param name="type">指定類型(存儲過程還是語句)</param> 22 /// <param name="pms">參數</param> 23 /// <returns></returns>
24 public static int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] pms) 25 { 26 using (SqlConnection con = new SqlConnection(conStr)) 27 { 28 using (SqlCommand cmd = new SqlCommand(sql, con)) 29 { 30 //判斷傳入的是sql語句還是存儲過程 31 cmd.CommandType = type; 32 if (pms != null) 33 { 34 cmd.Parameters.AddRange(pms); 35 } 36 con.Open(); 37 return cmd.ExecuteNonQuery(); 38 } 39 } 40 } 41 /// <summary> 42 /// 返回單個值 43 /// </summary> 44 /// <param name="sql"></param> 45 /// <param name="type"></param> 46 /// <param name="pms"></param> 47 /// <returns></returns> 48 public static object ExecuteScalar(string sql, CommandType type, params SqlParameter[] pms) 49 { 50 using (SqlConnection con = new SqlConnection(conStr)) 51 { 52 using (SqlCommand cmd = new SqlCommand(sql, con)) 53 { 54 cmd.CommandType = type; 55 if (pms != null) 56 { 57 cmd.Parameters.AddRange(pms); 58 } 59 con.Open(); 60 return cmd.ExecuteScalar(); 61 } 62 } 63 } 64 public static SqlDataReader ExecuteReader(string sql, CommandType type, params SqlParameter[] pms) 65 { 66 //這裏不使用using是因為reader對象不能關閉連接。reader對象在使用時,必須保證連接是打開的。 67 SqlConnection con = new SqlConnection(conStr); 68 using (SqlCommand cmd = new SqlCommand(sql, con)) 69 { 70 cmd.CommandType = type; 71 if (pms !=null) 72 { 73 cmd.Parameters.AddRange(pms); 74 } 75 try 76 { 77 con.Open(); 78 //使用CommandBehavior.CloseConnection,表示將來使用完畢sqlDatareader後,在關閉reader的同時,關閉關聯的Connection對象。 79 return cmd.ExecuteReader(CommandBehavior.CloseConnection); 80 } 81 //異常執行 82 catch (Exception) 83 { 84 con.Close(); 85 con.Dispose(); 86 throw; 87 } 88 } 89 } 90 public static DataTable ExcuteDataTable(string sql, CommandType type, params SqlParameter[] pms) 91 { 92 DataTable dt = new DataTable(); 93 using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr)) 94 { 95 adapter.SelectCommand.CommandType = type; 96 if (pms!=null) 97 { 98 adapter.SelectCommand.Parameters.AddRange(pms); 99 } 100 adapter.Fill(dt); 101 } 102 return dt; 103 } 104 } 105 }

簡單的SqlHelper