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

3

4

5

6

7

8

9

10

11

12

13



14


15

16

17

18



19

20

21

22


23


24

25

26

27

28

29



30

31

32

33

34

35

36

37


38


39

40

41

42

43

44

45



46

47

48

49

50

51

52

53


54


55

56

57

58

59

60



61

62

63

64

65

66


67


68

69

70

71

72

73

74



75

76

77

78

79

80


81


82

83

84

85

86

87

88



89

90

91

92

93

94

95

96



97

98

99

100

101

102

103

104

105

106

107

108

109

110

111


112


113

114

115

116



117

118

119



120

121

122

123

124

125

126

127

128


129


130

131

132

133



134

135

136

137

138

139


140


141

142

143

144



145

146

147



148

149

150

151

152

153

154


155


156

157

158

159

160

161

162

163

164



165

166

167

168

169


170


171

172

173

174

175

176

177

178



179

180

181

182

183


184


185

186

187

188

189

190

191

192



193

194

195

196

197


198


199

200

201

202

203

204

205

206

207

208



209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224


225


226

227

228

229

230



231

232



233

234

235

236

237



238

239

240

241

242

243

244

245



246

247

248

249

250

251

252

253

254

255

256



257

258

259

260

261

262

263


264


265

266

267

268

269



270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

来源:https://www.cnblogs.com/honeydancer/archive/2009/09/09/1563329.html