1
/**///////////////数据访问类
2
using System;
3
using System.ComponentModel;
4
using System.Collections;
5
using System.Web.Security;
6
using System.Diagnostics;
7
using System.Data;
8
using System.Data.SqlClient;
9
using System.Configuration;
10
using System.Text.RegularExpressions;
11
12
namespace 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

/**///////////////数据访问类 2
using System;3
using System.ComponentModel;4
using System.Collections;5
using System.Web.Security;6
using System.Diagnostics;7
using System.Data;8
using System.Data.SqlClient;9
using System.Configuration;10
using System.Text.RegularExpressions;11

12
namespace WebApp.Components13


{14

/**//// <summary> 15
/// 通用的数据库处理类,通过ado.net与数据库连接 16
/// </summary> 17
public class Database : IDisposable18

{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
#endregion36

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
#endregion52

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
#endregion65

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
#endregion79

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
#endregion110

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
#endregion127

128

关闭数据库连接#region 关闭数据库连接129

/**//// <summary> 130
/// 关闭数据库连接 131
/// </summary> 132
public void Close()133

{134
if (con != null)135
con.Close();136
}137
#endregion138

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
#endregion153

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
#endregion168

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
#endregion182

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
#endregion196

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
else214
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
#endregion223

224

将DataReader 转为 DataTable#region 将DataReader 转为 DataTable225

/**//// <summary> 226
/// 将DataReader 转为 DataTable 227
/// </summary> 228
/// <param name="DataReader">DataReader</param> 229
public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)230

{231
try232

{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
#endregion262

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
#endregion283

284
}285
}286
来源:https://www.cnblogs.com/honeydancer/archive/2009/09/09/1563329.html