1/**///////////////数据访问类
2using System;
3using System.ComponentModel;
4using System.Collections;
5using System.Web.Security;
6using System.Diagnostics;
7using System.Data;
8using System.Data.SqlClient;
9using System.Configuration;
10using System.Text.RegularExpressions;
11
12namespace WebApp.Components
13{
14 /**//// <summary>
15 /// 通用的数据库处理类,通过ado.net与数据库连接
16 /// </summary>
17 public class Database : IDisposable
18 {
19 // 连接数据源
20 private SqlConnection con;
21
22 执行不带参数的存储过程,返回存储过程返回值#region 执行不带参数的存储过程,返回存储过程返回值
23 /**//// <summary>
24 /// 执行存储过程
25 /// </summary>
26 /// <param name="procName">不带参数的存储过程的名称</param>
27 /// <returns>返回存储过程返回值</returns>
28 public int RunProc(string procName)
29 {
30 SqlCommand cmd = CreateCommand(procName, null);
31 cmd.ExecuteNonQuery();
32 this.Close();
33 return (int)cmd.Parameters["ReturnValue"].Value;
34 }
35 #endregion
36
37 执行带参数的存储过程,返回存储过程返回值#region 执行带参数的存储过程,返回存储过程返回值
38 /**//// <summary>
39 /// 执行存储过程
40 /// </summary>
41 /// <param name="procName">带参数存储过程名称</param>
42 /// <param name="prams">存储过程所需参数</param>
43 /// <returns>返回存储过程返回值</returns>
44 public int RunProc(string procName, SqlParameter[] prams)
45 {
46 SqlCommand cmd = CreateCommand(procName, prams);
47 cmd.ExecuteNonQuery();
48 this.Close();
49 return (int)cmd.Parameters["ReturnValue"].Value;
50 }
51 #endregion
52
53 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象
54 /**//// <summary>
55 /// 执行存储过程
56 /// </summary>
57 /// <param name="procName">不带参数的存储过程的名称</param>
58 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
59 public void RunProc(string procName, out SqlDataReader dataReader)
60 {
61 SqlCommand cmd = CreateCommand(procName, null);
62 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
63 }
64 #endregion
65
66 执行带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行带参数的存储过程,通过输出参数返回SqlDataReader对象
67 /**//// <summary>
68 /// 执行存储过程
69 /// </summary>
70 /// <param name="procName">带参数的存储过程的名称</param>
71 /// <param name="prams">存储过程所需参数</param>
72 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
73 public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
74 {
75 SqlCommand cmd = CreateCommand(procName, prams);
76 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
77 }
78 #endregion
79
80 创建SqlCommand对象#region 创建SqlCommand对象
81 /**//// <summary>
82 /// 创建一个SqlCommand对象以此来执行存储过程
83 /// </summary>
84 /// <param name="procName">存储过程的名称</param>
85 /// <param name="prams">存储过程所需参数</param>
86 /// <returns>返回SqlCommand对象</returns>
87 private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
88 {
89 // 确认打开连接
90 Open();
91 SqlCommand cmd = new SqlCommand(procName, con);
92 cmd.CommandType = CommandType.StoredProcedure;
93
94 // 依次把参数传入存储过程
95 if (prams != null)
96 {
97 foreach (SqlParameter parameter in prams)
98 cmd.Parameters.Add(parameter);
99 }
100
101 // 加入返回参数
102 cmd.Parameters.Add(
103 new SqlParameter("ReturnValue", SqlDbType.Int, 4,
104 ParameterDirection.ReturnValue, false, 0, 0,
105 string.Empty, DataRowVersion.Default, null));
106
107 return cmd;
108 }
109 #endregion
110
111 打开数据库连接#region 打开数据库连接
112 /**//// <summary>
113 /// 打开数据库连接.
114 /// </summary>
115 private void Open()
116 {
117 // 打开数据库连接
118 if (con == null)
119 {
120 con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
121 }
122 if (con.State == System.Data.ConnectionState.Closed)
123 con.Open();
124
125 }
126 #endregion
127
128 关闭数据库连接#region 关闭数据库连接
129 /**//// <summary>
130 /// 关闭数据库连接
131 /// </summary>
132 public void Close()
133 {
134 if (con != null)
135 con.Close();
136 }
137 #endregion
138
139 释放资源#region 释放资源
140 /**//// <summary>
141 /// 释放资源
142 /// </summary>
143 public void Dispose()
144 {
145 // 确认连接是否已经关闭
146 if (con != null)
147 {
148 con.Dispose();
149 con = null;
150 }
151 }
152 #endregion
153
154 传入输入参数#region 传入输入参数
155 /**//// <summary>
156 /// 传入输入参数
157 /// </summary>
158 /// <param name="ParamName">存储过程名称</param>
159 /// <param name="DbType">参数类型</param>
160 /// <param name="Size">参数大小</param>
161 /// <param name="Value">参数值</param>
162 /// <returns>新的 parameter 对象</returns>
163 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
164 {
165 return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
166 }
167 #endregion
168
169 传入输出参数#region 传入输出参数
170 /**//// <summary>
171 /// 传入输出参数
172 /// </summary>
173 /// <param name="ParamName">存储过程名称</param>
174 /// <param name="DbType">参数类型</param>
175 /// <param name="Size">参数大小</param>
176 /// <returns>新的 parameter 对象</returns>
177 public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
178 {
179 return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
180 }
181 #endregion
182
183 传入返回值参数#region 传入返回值参数
184 /**//// <summary>
185 /// 传入返回值参数
186 /// </summary>
187 /// <param name="ParamName">存储过程名称</param>
188 /// <param name="DbType">参数类型</param>
189 /// <param name="Size">参数大小</param>
190 /// <returns>新的 parameter 对象</returns>
191 public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
192 {
193 return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
194 }
195 #endregion
196
197 生成存储过程参数#region 生成存储过程参数
198 /**//// <summary>
199 /// 生成存储过程参数
200 /// </summary>
201 /// <param name="ParamName">存储过程名称</param>
202 /// <param name="DbType">参数类型</param>
203 /// <param name="Size">参数大小</param>
204 /// <param name="Direction">参数方向</param>
205 /// <param name="Value">参数值</param>
206 /// <returns>新的 parameter 对象</returns>
207 public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
208 {
209 SqlParameter param;
210
211 if (Size > 0)
212 param = new SqlParameter(ParamName, DbType, Size);
213 else
214 param = new SqlParameter(ParamName, DbType);
215
216 param.Direction = Direction;
217 if (!(Direction == ParameterDirection.Output && Value == null))
218 param.Value = Value;
219
220 return param;
221 }
222 #endregion
223
224 将DataReader 转为 DataTable#region 将DataReader 转为 DataTable
225 /**//// <summary>
226 /// 将DataReader 转为 DataTable
227 /// </summary>
228 /// <param name="DataReader">DataReader</param>
229 public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
230 {
231 try
232 {
233
234 DataTable objDataTable = new DataTable();
235 int intFieldCount = reader.FieldCount;
236 for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
237 {
238 objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
239 }
240
241 objDataTable.BeginLoadData();
242
243 object[] objValues = new object[intFieldCount];
244 while (reader.Read())
245 {
246 reader.GetValues(objValues);
247 objDataTable.LoadDataRow(objValues, true);
248 }
249 reader.Close();
250 objDataTable.EndLoadData();
251
252 return objDataTable;
253
254 }
255 catch (Exception ex)
256 {
257 throw new Exception("转换DataReader为DataTable出错!", ex);
258 }
259
260 }
261 #endregion
262
263 数字判定#region 数字判定
264 /**//// <summary>
265 /// 数字判定
266 /// </summary>
267 /// <param name="str">字符串参数</param>
268 public static bool IsNumber(String strNumber)
269 {
270 Regex objNotNumberPattern = new Regex("[^0-9.-]");
271 Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
272 Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
273 String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
274 String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
275 Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
276
277 return !objNotNumberPattern.IsMatch(strNumber) &&
278 !objTwoDotPattern.IsMatch(strNumber) &&
279 !objTwoMinusPattern.IsMatch(strNumber) &&
280 objNumberPattern.IsMatch(strNumber);
281 }
282 #endregion
283
284 }
285}
286
2using System;
3using System.ComponentModel;
4using System.Collections;
5using System.Web.Security;
6using System.Diagnostics;
7using System.Data;
8using System.Data.SqlClient;
9using System.Configuration;
10using System.Text.RegularExpressions;
11
12namespace WebApp.Components
13{
14 /**//// <summary>
15 /// 通用的数据库处理类,通过ado.net与数据库连接
16 /// </summary>
17 public class Database : IDisposable
18 {
19 // 连接数据源
20 private SqlConnection con;
21
22 执行不带参数的存储过程,返回存储过程返回值#region 执行不带参数的存储过程,返回存储过程返回值
23 /**//// <summary>
24 /// 执行存储过程
25 /// </summary>
26 /// <param name="procName">不带参数的存储过程的名称</param>
27 /// <returns>返回存储过程返回值</returns>
28 public int RunProc(string procName)
29 {
30 SqlCommand cmd = CreateCommand(procName, null);
31 cmd.ExecuteNonQuery();
32 this.Close();
33 return (int)cmd.Parameters["ReturnValue"].Value;
34 }
35 #endregion
36
37 执行带参数的存储过程,返回存储过程返回值#region 执行带参数的存储过程,返回存储过程返回值
38 /**//// <summary>
39 /// 执行存储过程
40 /// </summary>
41 /// <param name="procName">带参数存储过程名称</param>
42 /// <param name="prams">存储过程所需参数</param>
43 /// <returns>返回存储过程返回值</returns>
44 public int RunProc(string procName, SqlParameter[] prams)
45 {
46 SqlCommand cmd = CreateCommand(procName, prams);
47 cmd.ExecuteNonQuery();
48 this.Close();
49 return (int)cmd.Parameters["ReturnValue"].Value;
50 }
51 #endregion
52
53 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象
54 /**//// <summary>
55 /// 执行存储过程
56 /// </summary>
57 /// <param name="procName">不带参数的存储过程的名称</param>
58 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
59 public void RunProc(string procName, out SqlDataReader dataReader)
60 {
61 SqlCommand cmd = CreateCommand(procName, null);
62 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
63 }
64 #endregion
65
66 执行带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行带参数的存储过程,通过输出参数返回SqlDataReader对象
67 /**//// <summary>
68 /// 执行存储过程
69 /// </summary>
70 /// <param name="procName">带参数的存储过程的名称</param>
71 /// <param name="prams">存储过程所需参数</param>
72 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
73 public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
74 {
75 SqlCommand cmd = CreateCommand(procName, prams);
76 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
77 }
78 #endregion
79
80 创建SqlCommand对象#region 创建SqlCommand对象
81 /**//// <summary>
82 /// 创建一个SqlCommand对象以此来执行存储过程
83 /// </summary>
84 /// <param name="procName">存储过程的名称</param>
85 /// <param name="prams">存储过程所需参数</param>
86 /// <returns>返回SqlCommand对象</returns>
87 private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
88 {
89 // 确认打开连接
90 Open();
91 SqlCommand cmd = new SqlCommand(procName, con);
92 cmd.CommandType = CommandType.StoredProcedure;
93
94 // 依次把参数传入存储过程
95 if (prams != null)
96 {
97 foreach (SqlParameter parameter in prams)
98 cmd.Parameters.Add(parameter);
99 }
100
101 // 加入返回参数
102 cmd.Parameters.Add(
103 new SqlParameter("ReturnValue", SqlDbType.Int, 4,
104 ParameterDirection.ReturnValue, false, 0, 0,
105 string.Empty, DataRowVersion.Default, null));
106
107 return cmd;
108 }
109 #endregion
110
111 打开数据库连接#region 打开数据库连接
112 /**//// <summary>
113 /// 打开数据库连接.
114 /// </summary>
115 private void Open()
116 {
117 // 打开数据库连接
118 if (con == null)
119 {
120 con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
121 }
122 if (con.State == System.Data.ConnectionState.Closed)
123 con.Open();
124
125 }
126 #endregion
127
128 关闭数据库连接#region 关闭数据库连接
129 /**//// <summary>
130 /// 关闭数据库连接
131 /// </summary>
132 public void Close()
133 {
134 if (con != null)
135 con.Close();
136 }
137 #endregion
138
139 释放资源#region 释放资源
140 /**//// <summary>
141 /// 释放资源
142 /// </summary>
143 public void Dispose()
144 {
145 // 确认连接是否已经关闭
146 if (con != null)
147 {
148 con.Dispose();
149 con = null;
150 }
151 }
152 #endregion
153
154 传入输入参数#region 传入输入参数
155 /**//// <summary>
156 /// 传入输入参数
157 /// </summary>
158 /// <param name="ParamName">存储过程名称</param>
159 /// <param name="DbType">参数类型</param>
160 /// <param name="Size">参数大小</param>
161 /// <param name="Value">参数值</param>
162 /// <returns>新的 parameter 对象</returns>
163 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
164 {
165 return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
166 }
167 #endregion
168
169 传入输出参数#region 传入输出参数
170 /**//// <summary>
171 /// 传入输出参数
172 /// </summary>
173 /// <param name="ParamName">存储过程名称</param>
174 /// <param name="DbType">参数类型</param>
175 /// <param name="Size">参数大小</param>
176 /// <returns>新的 parameter 对象</returns>
177 public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
178 {
179 return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
180 }
181 #endregion
182
183 传入返回值参数#region 传入返回值参数
184 /**//// <summary>
185 /// 传入返回值参数
186 /// </summary>
187 /// <param name="ParamName">存储过程名称</param>
188 /// <param name="DbType">参数类型</param>
189 /// <param name="Size">参数大小</param>
190 /// <returns>新的 parameter 对象</returns>
191 public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
192 {
193 return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
194 }
195 #endregion
196
197 生成存储过程参数#region 生成存储过程参数
198 /**//// <summary>
199 /// 生成存储过程参数
200 /// </summary>
201 /// <param name="ParamName">存储过程名称</param>
202 /// <param name="DbType">参数类型</param>
203 /// <param name="Size">参数大小</param>
204 /// <param name="Direction">参数方向</param>
205 /// <param name="Value">参数值</param>
206 /// <returns>新的 parameter 对象</returns>
207 public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
208 {
209 SqlParameter param;
210
211 if (Size > 0)
212 param = new SqlParameter(ParamName, DbType, Size);
213 else
214 param = new SqlParameter(ParamName, DbType);
215
216 param.Direction = Direction;
217 if (!(Direction == ParameterDirection.Output && Value == null))
218 param.Value = Value;
219
220 return param;
221 }
222 #endregion
223
224 将DataReader 转为 DataTable#region 将DataReader 转为 DataTable
225 /**//// <summary>
226 /// 将DataReader 转为 DataTable
227 /// </summary>
228 /// <param name="DataReader">DataReader</param>
229 public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
230 {
231 try
232 {
233
234 DataTable objDataTable = new DataTable();
235 int intFieldCount = reader.FieldCount;
236 for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
237 {
238 objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
239 }
240
241 objDataTable.BeginLoadData();
242
243 object[] objValues = new object[intFieldCount];
244 while (reader.Read())
245 {
246 reader.GetValues(objValues);
247 objDataTable.LoadDataRow(objValues, true);
248 }
249 reader.Close();
250 objDataTable.EndLoadData();
251
252 return objDataTable;
253
254 }
255 catch (Exception ex)
256 {
257 throw new Exception("转换DataReader为DataTable出错!", ex);
258 }
259
260 }
261 #endregion
262
263 数字判定#region 数字判定
264 /**//// <summary>
265 /// 数字判定
266 /// </summary>
267 /// <param name="str">字符串参数</param>
268 public static bool IsNumber(String strNumber)
269 {
270 Regex objNotNumberPattern = new Regex("[^0-9.-]");
271 Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
272 Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
273 String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
274 String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
275 Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
276
277 return !objNotNumberPattern.IsMatch(strNumber) &&
278 !objTwoDotPattern.IsMatch(strNumber) &&
279 !objTwoMinusPattern.IsMatch(strNumber) &&
280 objNumberPattern.IsMatch(strNumber);
281 }
282 #endregion
283
284 }
285}
286
来源:https://www.cnblogs.com/honeydancer/archive/2009/09/09/1563329.html