1 class SQLHelper 2 { 3 #region 通用方法 4 // 數據鏈接池 5 private SqlConnection con; 6 /// <summary> 7 /// 返回數據庫鏈接字符串 8 /// </summary> 9 /// <returns></returns> 10 public static String GetSqlConnection() 11 { 12 String conn = ConfigurationManager.AppSettings["connectionString"].ToString(); 13 return conn; 14 } 15 #endregion 16 #region 執行sql字符串 17 /// <summary> 18 /// 執行不帶參數的SQL語句 19 /// </summary> 20 /// <param name="Sqlstr"></param> 21 /// <returns></returns> 22 public static int ExecuteSql(String Sqlstr) 23 { 24 String ConnStr = GetSqlConnection(); 25 using (SqlConnection conn = new SqlConnection(ConnStr)) 26 { 27 SqlCommand cmd = new SqlCommand(); 28 cmd.Connection = conn; 29 cmd.CommandText = Sqlstr; 30 conn.Open(); 31 cmd.ExecuteNonQuery(); 32 conn.Close(); 33 return 1; 34 } 35 } 36 /// <summary> 37 /// 執行帶參數的SQL語句 38 /// </summary> 39 /// <param name="Sqlstr">SQL語句</param> 40 /// <param name="param">參數對象數組</param> 41 /// <returns></returns> 42 public static int ExecuteSql(String Sqlstr, SqlParameter[] param) 43 { 44 String ConnStr = GetSqlConnection(); 45 using (SqlConnection conn = new SqlConnection(ConnStr)) 46 { 47 SqlCommand cmd = new SqlCommand(); 48 cmd.Connection = conn; 49 cmd.CommandText = Sqlstr; 50 cmd.Parameters.AddRange(param); 51 conn.Open(); 52 cmd.ExecuteNonQuery(); 53 conn.Close(); 54 return 1; 55 } 56 } 57 /// <summary> 58 /// 返回DataReader 59 /// </summary> 60 /// <param name="Sqlstr"></param> 61 /// <returns></returns> 62 public static SqlDataReader ExecuteReader(String Sqlstr) 63 { 64 String ConnStr = GetSqlConnection(); 65 SqlConnection conn = new SqlConnection(ConnStr);//返回DataReader時,是不能夠用using()的 66 try 67 { 68 SqlCommand cmd = new SqlCommand(); 69 cmd.Connection = conn; 70 cmd.CommandText = Sqlstr; 71 conn.Open(); 72 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);//關閉關聯的Connection 73 } 74 catch //(Exception ex) 75 { 76 return null; 77 } 78 } 79 /// <summary> 80 /// 執行SQL語句並返回數據表 81 /// </summary> 82 /// <param name="Sqlstr">SQL語句</param> 83 /// <returns></returns> 84 public static DataTable ExecuteDt(String Sqlstr) 85 { 86 String ConnStr = GetSqlConnection(); 87 using (SqlConnection conn = new SqlConnection(ConnStr)) 88 { 89 SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn); 90 DataTable dt = new DataTable(); 91 conn.Open(); 92 da.Fill(dt); 93 conn.Close(); 94 return dt; 95 } 96 } 97 /// <summary> 98 /// 執行SQL語句並返回DataSet 99 /// </summary> 100 /// <param name="Sqlstr">SQL語句</param> 101 /// <returns></returns> 102 public static DataSet ExecuteDs(String Sqlstr) 103 { 104 String ConnStr = GetSqlConnection(); 105 using (SqlConnection conn = new SqlConnection(ConnStr)) 106 { 107 SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn); 108 DataSet ds = new DataSet(); 109 conn.Open(); 110 da.Fill(ds); 111 conn.Close(); 112 return ds; 113 } 114 } 115 #endregion 116 #region 操做存儲過程 117 /// <summary> 118 /// 運行存儲過程(已重載) 119 /// </summary> 120 /// <param name="procName">存儲過程的名字</param> 121 /// <returns>存儲過程的返回值</returns> 122 public int RunProc(string procName) 123 { 124 SqlCommand cmd = CreateCommand(procName, null); 125 cmd.ExecuteNonQuery(); 126 this.Close(); 127 return (int)cmd.Parameters["ReturnValue"].Value; 128 } 129 /// <summary> 130 /// 運行存儲過程(已重載) 131 /// </summary> 132 /// <param name="procName">存儲過程的名字</param> 133 /// <param name="prams">存儲過程的輸入參數列表</param> 134 /// <returns>存儲過程的返回值</returns> 135 public int RunProc(string procName, SqlParameter[] prams) 136 { 137 SqlCommand cmd = CreateCommand(procName, prams); 138 cmd.ExecuteNonQuery(); 139 this.Close(); 140 return (int)cmd.Parameters[0].Value; 141 } 142 /// <summary> 143 /// 運行存儲過程(已重載) 144 /// </summary> 145 /// <param name="procName">存儲過程的名字</param> 146 /// <param name="dataReader">結果集</param> 147 public void RunProc(string procName, out SqlDataReader dataReader) 148 { 149 SqlCommand cmd = CreateCommand(procName, null); 150 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 151 } 152 /// <summary> 153 /// 運行存儲過程(已重載) 154 /// </summary> 155 /// <param name="procName">存儲過程的名字</param> 156 /// <param name="prams">存儲過程的輸入參數列表</param> 157 /// <param name="dataReader">結果集</param> 158 public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader) 159 { 160 SqlCommand cmd = CreateCommand(procName, prams); 161 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 162 } 163 /// <summary> 164 /// 建立Command對象用於訪問存儲過程 165 /// </summary> 166 /// <param name="procName">存儲過程的名字</param> 167 /// <param name="prams">存儲過程的輸入參數列表</param> 168 /// <returns>Command對象</returns> 169 private SqlCommand CreateCommand(string procName, SqlParameter[] prams) 170 { 171 // 肯定鏈接是打開的 172 Open(); 173 //command = new SqlCommand( sprocName, new SqlConnection( ConfigManager.DALConnectionString ) ); 174 SqlCommand cmd = new SqlCommand(procName, con); 175 cmd.CommandType = CommandType.StoredProcedure; 176 // 添加存儲過程的輸入參數列表 177 if (prams != null) 178 { 179 foreach (SqlParameter parameter in prams) 180 cmd.Parameters.Add(parameter); 181 } 182 // 返回Command對象 183 return cmd; 184 } 185 /// <summary> 186 /// 建立輸入參數 187 /// </summary> 188 /// <param name="ParamName">參數名</param> 189 /// <param name="DbType">參數類型</param> 190 /// <param name="Size">參數大小</param> 191 /// <param name="Value">參數值</param> 192 /// <returns>新參數對象</returns> 193 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) 194 { 195 return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); 196 } 197 /// <summary> 198 /// 建立輸出參數 199 /// </summary> 200 /// <param name="ParamName">參數名</param> 201 /// <param name="DbType">參數類型</param> 202 /// <param name="Size">參數大小</param> 203 /// <returns>新參數對象</returns> 204 public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) 205 { 206 return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null); 207 } 208 /// <summary> 209 /// 建立存儲過程參數 210 /// </summary> 211 /// <param name="ParamName">參數名</param> 212 /// <param name="DbType">參數類型</param> 213 /// <param name="Size">參數大小</param> 214 /// <param name="Direction">參數的方向(輸入/輸出)</param> 215 /// <param name="Value">參數值</param> 216 /// <returns>新參數對象</returns> 217 public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) 218 { 219 SqlParameter param; 220 if (Size > 0) 221 { 222 param = new SqlParameter(ParamName, DbType, Size); 223 } 224 else 225 { 226 param = new SqlParameter(ParamName, DbType); 227 } 228 param.Direction = Direction; 229 if (!(Direction == ParameterDirection.Output && Value == null)) 230 { 231 param.Value = Value; 232 } 233 return param; 234 } 235 #endregion 236 #region 數據庫鏈接和關閉 237 /// <summary> 238 /// 打開鏈接池 239 /// </summary> 240 private void Open() 241 { 242 // 打開鏈接池 243 if (con == null) 244 { 245 //這裏不只須要using System.Configuration;還要在引用目錄裏添加 246 con = new SqlConnection(GetSqlConnection()); 247 con.Open(); 248 } 249 } 250 /// <summary> 251 /// 關閉鏈接池 252 /// </summary> 253 public void Close() 254 { 255 if (con != null) 256 con.Close(); 257 } 258 /// <summary> 259 /// 釋放鏈接池 260 /// </summary> 261 public void Dispose() 262 { 263 // 肯定鏈接已關閉 264 if (con != null) 265 { 266 con.Dispose(); 267 con = null; 268 } 269 } 270 #endregion 271 }