我的数据访问类(第二版)—— for .net2.0 (二)
2007-04-29 21:43 金色海洋(jyk) 阅读(2316) 评论(4) 收藏 举报
下面写一下相对来说不变的地方
SQL语句部分,改成了静态函数的形式。
存储过程的代码
这里没有使用静态函数的方式,目的是为了方便添加存储过程的参数。
SQL语句部分,改成了静态函数的形式。
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Data;
5
using System.Data.Common;
6
using System.Data.SqlClient;
7
using JYK;
8
9
namespace JYK.DataAccessLibrary
10

{
11
//DataAccessLibrary 数据访问库
12
13
public class DAL
14
{
15
16
//查询语句部分
17
运行查询语句返回记录(DataSet、DataTable、DataRow、String[]、String)#region 运行查询语句返回记录(DataSet、DataTable、DataRow、String[]、String)
18
19
public static DataSet RunSqlDataSet(string sql)
20
{
21
string msg = "";
22
return RunSqlDataSet(sql, out msg);
23
}
24
25
/**//// <summary>
26
/// 运行SQL查询语句 返回DataSet。可以传入多条查询语句,返回的DataSet里会有多个DataTable
27
/// </summary>
28
/// <param name="SQL">查询语句。比如select * from tableName</param>
29
/// <returns>返回DataSet</returns>
30
函数实现 — — RunSqlDataSet#region 函数实现 — — RunSqlDataSet
31
public static DataSet RunSqlDataSet(string sql,out string ErrorMsg)
32
{
33
ErrorMsg = "";
34
//设置DataAdapter
35
DbDataAdapter da = Factory.CreateDataAdapter(sql);
36
try
37
{
38
DataSet DS = new DataSet();
39
da.Fill(DS);
40
return DS;
41
}
42
catch (Exception ex)
43
{
44
WriteLog.SetErrorMsg("RunSqlDataSet", sql, ex.Message); //处理错误
45
ErrorMsg = ex.Message + "<BR>RunSqlDataSet_SQL:" + sql;
46
return null;
47
}
48
finally
49
{
50
//关闭数据库,销毁实例
51
Factory.DbDataAdapterDispose(da);
52
53
}
54
}
55
#endregion
56
57
58
public static DataTable RunSqlDataTable(string sql)
59
{
60
string msg = "";
61
return RunSqlDataTable(sql, out msg);
62
63
}
64
65
/**//// <summary>
66
/// 运行SQL查询语句 返回DataTable。
67
/// </summary>
68
/// <param name="SQL">查询语句。比如select * from tableName</param>
69
/// <returns>返回DataTable</returns>
70
函数实现 — — RunSqlDataTable#region 函数实现 — — RunSqlDataTable
71
public static DataTable RunSqlDataTable(string sql, out string ErrorMsg)
72
{
73
ErrorMsg = "";
74
//设置DataAdapter
75
DbDataAdapter da = Factory.CreateDataAdapter(sql);
76
try
77
{
78
DataTable DT = new DataTable();
79
da.Fill(DT);
80
return DT;
81
}
82
catch (Exception ex)
83
{
84
WriteLog.SetErrorMsg("RunSqlDataTable", sql, ex.Message); //处理错误
85
ErrorMsg = ex.Message + "<BR>RunSqlDataSet_SQL:" + sql;
86
return null;
87
}
88
finally
89
{
90
//关闭数据库,销毁实例
91
Factory.DbDataAdapterDispose(da);
92
}
93
}
94
#endregion
95
96
97
/**//// <summary>
98
/// 运行SQl语句返回第一条记录。返回DataRow
99
/// </summary>
100
/// <param name="SQL">查询语句。比如select * from tableName</param>
101
/// <returns></returns>
102
函数实现 — — RunSqlDataRow#region 函数实现 — — RunSqlDataRow
103
public static DataRow RunSqlDataRow(string sql)
104
{
105
//设置DataAdapter
106
DbDataAdapter da = Factory.CreateDataAdapter(sql);
107
try
108
{
109
DataTable DT = new DataTable();
110
da.Fill(DT);
111
if (DT.Rows.Count > 0)
112
return DT.Rows[0];
113
else
114
return null;
115
}
116
catch (Exception ex)
117
{
118
WriteLog.SetErrorMsg("RunSqlDataRow", sql, ex.Message); //处理错误
119
return null;
120
}
121
finally
122
{
123
//关闭数据库,销毁实例
124
Factory.DbDataAdapterDispose(da);
125
}
126
127
}
128
#endregion
129
130
131
/**//// <summary>
132
/// 运行SQl语句返回第一条记录的数组。返回字符串数组
133
/// </summary>
134
/// <param name="SQL">查询语句。比如select top 1 * from tableName</param>
135
/// <returns></returns>
136
函数实现 — — RunSqlStrings#region 函数实现 — — RunSqlStrings
137
public static string[] RunSqlStrings(string sql)
138
{
139
//传入查询语句,返回第一条记录的字符串数组
140
//设置command
141
DbCommand cm = Factory.CreateCommand(sql);
142
143
try
144
{
145
cm.Connection.Open();
146
147
DbDataReader r = cm.ExecuteReader(CommandBehavior.SingleRow);
148
if (r.Read())
149
{
150
int ArrLength = r.FieldCount;
151
152
string[] strValue = new string[ArrLength];
153
for (int i = 0; i < ArrLength; i++)
154
strValue[i] = r.GetValue(i).ToString();
155
return strValue;
156
}
157
else
158
{
159
r.Close();
160
return null;
161
}
162
}
163
catch (Exception ex)
164
{
165
WriteLog.SetErrorMsg("RunSqlStrings", sql, ex.Message); //处理错误
166
return null;
167
}
168
finally
169
{
170
cm.Connection.Close();
171
cm.Connection.Dispose();
172
cm.Dispose();
173
174
}
175
}
176
#endregion
177
178
/**//// <summary>
179
/// 运行SQl语句返回每一条记录的第一个字段的数组。返回字符串数组
180
/// </summary>
181
/// <param name="SQL">查询语句。比如select myName from tableName</param>
182
/// <returns></returns>
183
函数实现 — — RunSqlStringsByRow#region 函数实现 — — RunSqlStringsByRow
184
public static string[] RunSqlStringsByRow(string sql)
185
{
186
187
//传入查询语句,每一条记录的第一个字段的数组。返回字符串数组
188
//设置command
189
DbCommand cm = Factory.CreateCommand(sql);
190
191
try
192
{
193
cm.Connection.Open();
194
195
DbDataReader r = cm.ExecuteReader();
196
197
System.Collections.Generic.List<string> list = new List<string>();
198
while (r.Read())
199
list.Add(r[0].ToString());
200
201
return list.ToArray();
202
203
}
204
catch (Exception ex)
205
{
206
WriteLog.SetErrorMsg("RunSqlStringsByRow", sql, ex.Message); //处理错误
207
return null;
208
}
209
finally
210
{
211
cm.Connection.Close();
212
cm.Connection.Dispose();
213
cm.Dispose();
214
215
}
216
}
217
#endregion
218
219
/**//// <summary>
220
/// 运行SQl语句返回第一条记录的第一列的值。
221
/// </summary>
222
/// <param name="SQL">查询语句。比如select top 1 ID from tableName where userName='aa'。会返回ID的内容</param>
223
/// <returns></returns>
224
函数实现 — — RunSqlGetID#region 函数实现 — — RunSqlGetID
225
public static string RunSqlGetID(string sql)
226
{
227
//设置command
228
DbCommand cm = Factory.CreateCommand(sql);
229
230
try
231
{
232
cm.Connection.Open();
233
234
DbDataReader r = cm.ExecuteReader(CommandBehavior.SingleRow);
235
if (r.Read())
236
return r.GetValue(0).ToString();
237
else
238
return null;
239
}
240
catch (Exception ex)
241
{
242
WriteLog.SetErrorMsg("RunSqlGetID", sql, ex.Message); //处理错误
243
return null;
244
}
245
finally
246
{
247
cm.Connection.Close();
248
cm.Connection.Dispose();
249
cm.Dispose();
250
}
251
}
252
#endregion
253
254
#endregion
255
256
运行查询语句不返回记录集(无返回记录、检查持否存在指定的记录)#region 运行查询语句不返回记录集(无返回记录、检查持否存在指定的记录)
257
/**//// <summary>
258
/// 运行SQL查询语句,不返回记录集。用于添加、修改、删除等操作
259
/// </summary>
260
/// <param name="SQL">查询语句。比如insert into tableName 、update tableName
</param>
261
/// <returns></returns>
262
函数实现 — — RunSql#region 函数实现 — — RunSql
263
public static void RunSql(string sql)
264
{
265
//设置command
266
DbCommand cm = Factory.CreateCommand(sql);
267
268
try
269
{
270
cm.Connection.Open();
271
cm.ExecuteNonQuery();
272
}
273
catch (Exception ex)
274
{
275
WriteLog.SetErrorMsg("RunSql", sql, ex.Message); //处理错误
276
}
277
finally
278
{
279
cm.Connection.Close();
280
cm.Connection.Dispose();
281
cm.Dispose();
282
}
283
}
284
#endregion
285
286
287
/**//// <summary>
288
/// 执行一条SQL语句,看是否能查到记录 有:返回true;没有返回false,用于判断是否重名
289
/// </summary>
290
/// <param name="SQL">查询语句。比如select ID from tableName where userName='aa'</param>
291
/// <returns></returns>
292
函数实现 — — RunSqlExists#region 函数实现 — — RunSqlExists
293
public static bool RunSqlExists(string sql)
294
{
295
//设置command
296
DbCommand cm = Factory.CreateCommand(sql);
297
298
try
299
{
300
if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed)
301
cm.Connection.Open();
302
303
DbDataReader r = cm.ExecuteReader(CommandBehavior.CloseConnection);
304
if (r.HasRows)
305
return true;
306
else
307
return false;
308
}
309
catch (Exception ex)
310
{
311
WriteLog.SetErrorMsg("RunSqlDataSet", sql, ex.Message); //处理错误
312
return true;
313
}
314
finally
315
{
316
cm.Connection.Close();
317
cm.Connection.Dispose();
318
cm.Dispose();
319
}
320
}
321
#endregion
322
323
#endregion
324
325
查询语句的方式添加、修改数据#region 查询语句的方式添加、修改数据
326
327
/**//// <summary>
328
/// 添加记录。传入表名,字段数组,值数组,返回新生成记录的ID
329
/// </summary>
330
/// <param name="TableName">要添加记录的表的名称</param>
331
/// <param name="ziduan">字段名数组</param>
332
/// <param name="msg">字段对应的值的数组</param>
333
/// <returns></returns>
334
public static string InsertDataStr(string TableName, string[] columns, string[] msg)
335
{
336
//添加数据 返回新添加的ID
337
System.Text.StringBuilder SQL = new System.Text.StringBuilder(300);
338
SQL.Append("insert into "); //insert into
339
SQL.Append(TableName);
340
SQL.Append(" (");
341
int i;
342
for (i = 0; i < columns.Length - 1; i++) //字段
343
{
344
SQL.Append(columns[i]);
345
SQL.Append(",");
346
}
347
SQL.Append(columns[i]);
348
SQL.Append(") values ('");
349
350
for (i = 0; i < columns.Length - 1; i++)
351
{
352
SQL.Append(msg[i]);
353
SQL.Append("','");
354
}
355
SQL.Append(msg[i]);
356
if (WebConfig.DataBaseType() == 1)
357
SQL.Append("') select scope_identity() as a1");
358
else
359
SQL.Append("')");
360
361
string re = RunSqlGetID(SQL.ToString());
362
SQL.Length = 1;
363
if (re == null)
364
return "-1";
365
else
366
return re;
367
}
368
369
/**//// <summary>
370
/// 修改记录。传入表名,字段数组,值数组
371
/// </summary>
372
/// <param name="TableName">要修改记录的表的名称</param>
373
/// <param name="ziduan">字段名数组</param>
374
/// <param name="msg">字段对应的值的数组</param>
375
/// <param name="tiaojian">条件 ,加在where 后面的语句</param>
376
/// <returns></returns>
377
public static bool UpdateData(string TableName, string[] cloumns, string[] msg, string myWhere)
378
{
379
System.Text.StringBuilder SQL = new System.Text.StringBuilder(300);
380
SQL.Append("update "); //update
381
SQL.Append(TableName);
382
SQL.Append(" set ");
383
int i;
384
for (i = 0; i < cloumns.Length - 1; i++)
385
{
386
SQL.Append(cloumns[i]); //update
387
SQL.Append("='");
388
SQL.Append(msg[i]);
389
SQL.Append("',");
390
}
391
SQL.Append(cloumns[i]); //update
392
SQL.Append("='");
393
SQL.Append(msg[i]);
394
SQL.Append("' where ");
395
SQL.Append(myWhere);
396
397
RunSql(SQL.ToString());
398
return true;
399
400
}
401
#endregion
402
403
}
404
}
405
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Data;5
using System.Data.Common;6
using System.Data.SqlClient;7
using JYK;8

9
namespace JYK.DataAccessLibrary10


{11
//DataAccessLibrary 数据访问库12
13
public class DAL14

{15
16
//查询语句部分17

运行查询语句返回记录(DataSet、DataTable、DataRow、String[]、String)#region 运行查询语句返回记录(DataSet、DataTable、DataRow、String[]、String)18

19
public static DataSet RunSqlDataSet(string sql)20

{21
string msg = "";22
return RunSqlDataSet(sql, out msg);23
}24

25

/**//// <summary>26
/// 运行SQL查询语句 返回DataSet。可以传入多条查询语句,返回的DataSet里会有多个DataTable27
/// </summary>28
/// <param name="SQL">查询语句。比如select * from tableName</param>29
/// <returns>返回DataSet</returns>30

函数实现 — — RunSqlDataSet#region 函数实现 — — RunSqlDataSet31
public static DataSet RunSqlDataSet(string sql,out string ErrorMsg)32

{33
ErrorMsg = "";34
//设置DataAdapter 35
DbDataAdapter da = Factory.CreateDataAdapter(sql);36
try37

{38
DataSet DS = new DataSet();39
da.Fill(DS);40
return DS;41
}42
catch (Exception ex)43

{44
WriteLog.SetErrorMsg("RunSqlDataSet", sql, ex.Message); //处理错误45
ErrorMsg = ex.Message + "<BR>RunSqlDataSet_SQL:" + sql;46
return null;47
}48
finally49

{50
//关闭数据库,销毁实例51
Factory.DbDataAdapterDispose(da);52
53
}54
}55
#endregion56

57

58
public static DataTable RunSqlDataTable(string sql)59

{60
string msg = "";61
return RunSqlDataTable(sql, out msg);62
63
}64

65

/**//// <summary>66
/// 运行SQL查询语句 返回DataTable。67
/// </summary>68
/// <param name="SQL">查询语句。比如select * from tableName</param>69
/// <returns>返回DataTable</returns>70

函数实现 — — RunSqlDataTable#region 函数实现 — — RunSqlDataTable71
public static DataTable RunSqlDataTable(string sql, out string ErrorMsg)72

{73
ErrorMsg = "";74
//设置DataAdapter 75
DbDataAdapter da = Factory.CreateDataAdapter(sql);76
try77

{78
DataTable DT = new DataTable();79
da.Fill(DT);80
return DT;81
}82
catch (Exception ex)83

{84
WriteLog.SetErrorMsg("RunSqlDataTable", sql, ex.Message); //处理错误85
ErrorMsg = ex.Message + "<BR>RunSqlDataSet_SQL:" + sql;86
return null;87
}88
finally89

{90
//关闭数据库,销毁实例91
Factory.DbDataAdapterDispose(da);92
}93
}94
#endregion95

96

97

/**//// <summary>98
/// 运行SQl语句返回第一条记录。返回DataRow99
/// </summary>100
/// <param name="SQL">查询语句。比如select * from tableName</param>101
/// <returns></returns>102

函数实现 — — RunSqlDataRow#region 函数实现 — — RunSqlDataRow103
public static DataRow RunSqlDataRow(string sql)104

{105
//设置DataAdapter 106
DbDataAdapter da = Factory.CreateDataAdapter(sql);107
try108

{109
DataTable DT = new DataTable();110
da.Fill(DT);111
if (DT.Rows.Count > 0)112
return DT.Rows[0];113
else114
return null;115
}116
catch (Exception ex)117

{118
WriteLog.SetErrorMsg("RunSqlDataRow", sql, ex.Message); //处理错误119
return null;120
}121
finally122

{123
//关闭数据库,销毁实例124
Factory.DbDataAdapterDispose(da);125
}126

127
}128
#endregion129

130

131

/**//// <summary>132
/// 运行SQl语句返回第一条记录的数组。返回字符串数组133
/// </summary>134
/// <param name="SQL">查询语句。比如select top 1 * from tableName</param>135
/// <returns></returns>136

函数实现 — — RunSqlStrings#region 函数实现 — — RunSqlStrings137
public static string[] RunSqlStrings(string sql)138

{139
//传入查询语句,返回第一条记录的字符串数组140
//设置command141
DbCommand cm = Factory.CreateCommand(sql);142
143
try144

{145
cm.Connection.Open();146

147
DbDataReader r = cm.ExecuteReader(CommandBehavior.SingleRow);148
if (r.Read())149

{150
int ArrLength = r.FieldCount;151

152
string[] strValue = new string[ArrLength];153
for (int i = 0; i < ArrLength; i++)154
strValue[i] = r.GetValue(i).ToString();155
return strValue;156
}157
else158

{159
r.Close();160
return null;161
}162
}163
catch (Exception ex)164

{165
WriteLog.SetErrorMsg("RunSqlStrings", sql, ex.Message); //处理错误166
return null;167
}168
finally169

{170
cm.Connection.Close();171
cm.Connection.Dispose();172
cm.Dispose();173

174
}175
}176
#endregion177

178

/**//// <summary>179
/// 运行SQl语句返回每一条记录的第一个字段的数组。返回字符串数组180
/// </summary>181
/// <param name="SQL">查询语句。比如select myName from tableName</param>182
/// <returns></returns>183

函数实现 — — RunSqlStringsByRow#region 函数实现 — — RunSqlStringsByRow184
public static string[] RunSqlStringsByRow(string sql)185

{186

187
//传入查询语句,每一条记录的第一个字段的数组。返回字符串数组188
//设置command189
DbCommand cm = Factory.CreateCommand(sql);190
191
try192

{193
cm.Connection.Open();194

195
DbDataReader r = cm.ExecuteReader();196
197
System.Collections.Generic.List<string> list = new List<string>();198
while (r.Read())199
list.Add(r[0].ToString());200

201
return list.ToArray();202

203
}204
catch (Exception ex)205

{206
WriteLog.SetErrorMsg("RunSqlStringsByRow", sql, ex.Message); //处理错误207
return null;208
}209
finally210

{211
cm.Connection.Close();212
cm.Connection.Dispose();213
cm.Dispose();214
215
}216
}217
#endregion218

219

/**//// <summary>220
/// 运行SQl语句返回第一条记录的第一列的值。221
/// </summary>222
/// <param name="SQL">查询语句。比如select top 1 ID from tableName where userName='aa'。会返回ID的内容</param>223
/// <returns></returns>224

函数实现 — — RunSqlGetID#region 函数实现 — — RunSqlGetID225
public static string RunSqlGetID(string sql)226

{227
//设置command228
DbCommand cm = Factory.CreateCommand(sql);229
230
try231

{232
cm.Connection.Open();233

234
DbDataReader r = cm.ExecuteReader(CommandBehavior.SingleRow);235
if (r.Read())236
return r.GetValue(0).ToString();237
else238
return null;239
}240
catch (Exception ex)241

{242
WriteLog.SetErrorMsg("RunSqlGetID", sql, ex.Message); //处理错误243
return null;244
}245
finally246

{247
cm.Connection.Close();248
cm.Connection.Dispose();249
cm.Dispose();250
}251
}252
#endregion253

254
#endregion255

256

运行查询语句不返回记录集(无返回记录、检查持否存在指定的记录)#region 运行查询语句不返回记录集(无返回记录、检查持否存在指定的记录)257

/**//// <summary>258
/// 运行SQL查询语句,不返回记录集。用于添加、修改、删除等操作259
/// </summary>260
/// <param name="SQL">查询语句。比如insert into tableName 、update tableName
</param>261
/// <returns></returns>262

函数实现 — — RunSql#region 函数实现 — — RunSql263
public static void RunSql(string sql)264

{265
//设置command266
DbCommand cm = Factory.CreateCommand(sql);267
268
try269

{270
cm.Connection.Open();271
cm.ExecuteNonQuery();272
}273
catch (Exception ex)274

{275
WriteLog.SetErrorMsg("RunSql", sql, ex.Message); //处理错误276
}277
finally278

{279
cm.Connection.Close();280
cm.Connection.Dispose();281
cm.Dispose();282
}283
}284
#endregion285

286

287

/**//// <summary>288
/// 执行一条SQL语句,看是否能查到记录 有:返回true;没有返回false,用于判断是否重名289
/// </summary>290
/// <param name="SQL">查询语句。比如select ID from tableName where userName='aa'</param>291
/// <returns></returns>292

函数实现 — — RunSqlExists#region 函数实现 — — RunSqlExists293
public static bool RunSqlExists(string sql)294

{295
//设置command296
DbCommand cm = Factory.CreateCommand(sql);297
298
try299

{300
if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed)301
cm.Connection.Open();302

303
DbDataReader r = cm.ExecuteReader(CommandBehavior.CloseConnection);304
if (r.HasRows)305
return true;306
else307
return false;308
}309
catch (Exception ex)310

{311
WriteLog.SetErrorMsg("RunSqlDataSet", sql, ex.Message); //处理错误312
return true;313
}314
finally315

{316
cm.Connection.Close();317
cm.Connection.Dispose();318
cm.Dispose();319
}320
}321
#endregion322

323
#endregion324

325

查询语句的方式添加、修改数据#region 查询语句的方式添加、修改数据326

327

/**//// <summary>328
/// 添加记录。传入表名,字段数组,值数组,返回新生成记录的ID329
/// </summary>330
/// <param name="TableName">要添加记录的表的名称</param>331
/// <param name="ziduan">字段名数组</param>332
/// <param name="msg">字段对应的值的数组</param>333
/// <returns></returns>334
public static string InsertDataStr(string TableName, string[] columns, string[] msg)335

{336
//添加数据 返回新添加的ID337
System.Text.StringBuilder SQL = new System.Text.StringBuilder(300);338
SQL.Append("insert into "); //insert into 339
SQL.Append(TableName);340
SQL.Append(" (");341
int i;342
for (i = 0; i < columns.Length - 1; i++) //字段343

{344
SQL.Append(columns[i]);345
SQL.Append(",");346
}347
SQL.Append(columns[i]);348
SQL.Append(") values ('");349

350
for (i = 0; i < columns.Length - 1; i++)351

{352
SQL.Append(msg[i]);353
SQL.Append("','");354
}355
SQL.Append(msg[i]);356
if (WebConfig.DataBaseType() == 1)357
SQL.Append("') select scope_identity() as a1");358
else359
SQL.Append("')");360

361
string re = RunSqlGetID(SQL.ToString());362
SQL.Length = 1;363
if (re == null)364
return "-1";365
else366
return re;367
}368

369

/**//// <summary>370
/// 修改记录。传入表名,字段数组,值数组 371
/// </summary>372
/// <param name="TableName">要修改记录的表的名称</param>373
/// <param name="ziduan">字段名数组</param>374
/// <param name="msg">字段对应的值的数组</param>375
/// <param name="tiaojian">条件 ,加在where 后面的语句</param>376
/// <returns></returns>377
public static bool UpdateData(string TableName, string[] cloumns, string[] msg, string myWhere)378

{379
System.Text.StringBuilder SQL = new System.Text.StringBuilder(300);380
SQL.Append("update "); //update381
SQL.Append(TableName);382
SQL.Append(" set ");383
int i;384
for (i = 0; i < cloumns.Length - 1; i++)385

{386
SQL.Append(cloumns[i]); //update387
SQL.Append("='");388
SQL.Append(msg[i]);389
SQL.Append("',");390
}391
SQL.Append(cloumns[i]); //update392
SQL.Append("='");393
SQL.Append(msg[i]);394
SQL.Append("' where ");395
SQL.Append(myWhere);396

397
RunSql(SQL.ToString());398
return true;399

400
}401
#endregion402

403
}404
}405

存储过程的代码
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Data;
5
using System.Data.Common;
6
using JYK;
7
8
9
namespace JYK.DataAccessLibrary
10

{
11
public class DataAccessLayerSP
12
{
13
属性#region 属性
14
private static string errorMsg; //出错信息
15
private static bool isShowErrorSQL; //是否显示出错的查询语句(包括存储过程名程)
16
private DbCommand cm ; //建立Command对象
17
18
/**//// <summary>
19
/// 读取出错信息
20
/// </summary>
21
public string ErrorMsg
22
{
23
get
{return errorMsg;}
24
}
25
26
/**//// <summary>
27
/// 修改连接字符串,在同时访问两个或两个以上的数据库的时候使用
28
/// </summary>
29
public string cnString
30
{
31
set
{cm.Connection.ConnectionString = value;}
32
get
{return cm.Connection.ConnectionString;}
33
}
34
35
/**//// <summary>
36
/// 释放资源~
37
/// </summary>
38
public void Dispose()
39
{
40
errorMsg = null;
41
cm.Parameters.Clear();
42
cm.Connection.Close();
43
cm.Connection.Dispose();
44
cm.Dispose();
45
}
46
#endregion
47
48
public DataAccessLayerSP() //构造函数
49
{
50
//获取连接字符串
51
cm = Factory.CreateCommand();
52
cm.CommandType = CommandType.StoredProcedure;
53
//初始化错误信息
54
errorMsg = "";
55
56
//本地运行,显示出错的查询语句(包括存储过程名程)
57
isShowErrorSQL = WebConfig.isShowErrorSQL();
58
59
}
60
61
//存储过程的参数部分
62
存储过程的参数部分——清除和添加参数#region 存储过程的参数部分——清除和添加参数
63
64
清除参数#region 清除参数
65
/**//// <summary>
66
/// 清除Command的存储过程的参数。
67
/// </summary>
68
public void ClearParameter()
69
{cm.Parameters.Clear();}
70
#endregion
71
72
//int: tinyint、smallint
73
//bigint:
74
//bool: bit
75
//double: float、real
76
//string: char、nchar、varchar、nvarchar、uniqueidentifier、smalldatetime、datetime
77
//string: ntext、text
78
79
//decimal:从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
80
//numeric:功能上等同于 decimal。
81
//decimal: smallmoney、money
82
83
//二进制
84
// binary、varbinary、image
85
86
输入型的参数 int 、double、decimal、nvarChar、、、#region 输入型的参数 int 、double、decimal、nvarChar、、、
87
int#region int
88
/**//// <summary>
89
/// 添加int型的参数。
90
/// </summary>
91
/// <param name="ParameterName">参数名称。比如 @UserName</param>
92
/// <param name="ParameterValue">参数值</param>
93
public void addNewParameter(string ParameterName,int ParameterValue)
94
{
95
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName,SqlDbType.Int,4); //添加存储过程的参数
96
cm.Parameters[ParameterName].Value=ParameterValue; //负值
97
//设置方向取默认值——输入
98
}
99
#endregion
100
101
double#region double
102
/**//// <summary>
103
/// 添加小数参数,double
104
/// </summary>
105
/// <param name="ParameterName">参数名称。比如 @UserName</param>
106
/// <param name="ParameterValue">参数值</param>
107
public void addNewParameter(string ParameterName,double ParameterValue )
108
{
109
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Float); //添加存储过程的参数
110
cm.Parameters[ParameterName].Value=ParameterValue; //负值
111
}
112
#endregion
113
114
decimal#region decimal
115
/**//// <summary>
116
/// 添加金额参数,方向是输入(input)。decimal
117
/// </summary>
118
/// <param name="ParameterName">参数名称。比如 @UserName</param>
119
/// <param name="ParameterValue">参数值</param>
120
public void addNewParameter(string ParameterName,decimal ParameterValue )
121
{
122
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Decimal); //添加存储过程的参数
123
cm.Parameters[ParameterName].Value=ParameterValue; //负值
124
}
125
#endregion
126
127
nvarChar#region nvarChar
128
/**//// <summary>
129
/// 添加nvarChar型的参数。方向是输入(input)
130
/// </summary>
131
/// <param name="ParameterName">参数名称。比如 @UserName</param>
132
/// <param name="ParameterValue">参数值</param>
133
/// <param name="size">参数大小</param>
134
public void addNewParameter(string ParameterName,string ParameterValue,int size)
135
{
136
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NVarChar, size); //添加存储过程的参数
137
cm.Parameters[ParameterName].Value=ParameterValue; //负值
138
}
139
#endregion
140
141
nText#region nText
142
/**//// <summary>
143
/// 添加nText型的参数。方向是输入(input)
144
/// </summary>
145
/// <param name="ParameterName">参数名称。比如 @UserName</param>
146
/// <param name="ParameterValue">参数值</param>
147
public void addNewParameter(string ParameterName,string ParameterValue)
148
{
149
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NText); //添加存储过程的参数
150
cm.Parameters[ParameterName].Value=ParameterValue; //负值
151
}
152
153
#endregion
154
155
bit#region bit
156
/**//// <summary>
157
/// 添加bit型的参数。方向是输入(input)
158
/// </summary>
159
/// <param name="ParameterName">参数名称。比如 @UserName</param>
160
/// <param name="ParameterValue">参数值</param>
161
public void addNewParameter(string ParameterName,bool ParameterValue)
162
{
163
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Bit); //添加存储过程的参数
164
cm.Parameters[ParameterName].Value=ParameterValue; //负值
165
}
166
#endregion
167
168
#endregion
169
170
输出型的参数#region 输出型的参数
171
172
/**//// <summary>
173
/// 添加输出型的参数。只支持常用的几个参数类型,如果需要可以扩充。
174
/// </summary>
175
/// <param name="ParameterName">参数名称。比如 @UserName</param>
176
/// <param name="ParameterValue">参数的类型</param>
177
public void addNewParameter(string ParameterName,JYK.ParameterKind kind)
178
{
179
switch(kind)
180
{
181
case ParameterKind.Int :
182
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Int); //添加存储过程的参数
183
break;
184
case ParameterKind.Double:
185
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Float); //添加存储过程的参数
186
break;
187
case ParameterKind.Decimal :
188
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Decimal); //添加存储过程的参数
189
break;
190
case ParameterKind.NVarChar :
191
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NVarChar, 4000); //添加存储过程的参数
192
break;
193
case ParameterKind.Bit :
194
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Bit); //添加存储过程的参数
195
break;
196
}
197
cm.Parameters[ParameterName].Direction= ParameterDirection.Output; //设置方向
198
}
199
200
#endregion
201
202
#endregion
203
204
存储过程的参数部分——取参数的返回值#region 存储过程的参数部分——取参数的返回值
205
206
/**//// <summary>
207
/// 按序号返回参数值,一般在执行完存储过程后使用
208
/// </summary>
209
/// <param name="ParameterIndex">序号</param>
210
/// <returns>返回参数的内容</returns>
211
public string this[int ParameterIndex]
212
{
213
get
{return cm.Parameters[ParameterIndex].Value.ToString(); }
214
}
215
216
/**//// <summary>
217
/// 按名称返回参数值,一般在执行完存储过程后使用
218
/// </summary>
219
/// <param name="ParameterName">参数名称。比如 @UserName</param>
220
/// <returns>返回参数的内容</returns>
221
public string this[string ParameterName]
222
{
223
get
{return cm.Parameters[ParameterName].Value.ToString(); }
224
}
225
#endregion
226
227
存储过程的参数部分——修改参数值#region 存储过程的参数部分——修改参数值
228
/**//// <summary>
229
/// 按序号修改参数值,一般在一次添加多条记录时用。
230
/// </summary>
231
/// <param name="ParameterIndex">序号</param>
232
public void setParameter(int ParameterIndex,string parameterValue)
233
{ cm.Parameters[ParameterIndex].Value = parameterValue;}
234
235
/**//// <summary>
236
/// 按名称修改参数值,一般在一次添加多条记录时用
237
/// </summary>
238
/// <param name="ParameterName">参数名称。比如 @UserName</param>
239
public void setParameter(string ParameterName,string parameterValue)
240
{ cm.Parameters[ParameterName].Value = parameterValue;}
241
#endregion
242
243
//存储过程部分
244
运行存储过程返回记录(DataSet、DataTable、不返回记录集)#region 运行存储过程返回记录(DataSet、DataTable、不返回记录集)
245
246
/**//// <summary>
247
/// 运行存储过程返回DataSet。DataSet里面可以是多个表(DateTable)
248
/// </summary>
249
/// <param name="StoredProcedureName">存储过程名称</param>
250
/// <returns>返回DataSet</returns>
251
函数实现 — — RunStoreDataSet#region 函数实现 — — RunStoreDataSet
252
public DataSet RunStoreDataSet(string StoredProcedureName)
253
{
254
DbDataAdapter da = Factory.CreateDataAdapter(StoredProcedureName);
255
da.SelectCommand.CommandType = CommandType.StoredProcedure;
256
try
257
{
258
DataSet DS = new DataSet();
259
da.Fill(DS);
260
return DS;
261
}
262
catch(Exception ex)
263
{
264
WriteLog.SetErrorMsg("RunStoreDataSet", StoredProcedureName, ex.Message); //处理错误
265
return null;
266
}
267
finally
268
{
269
da.Dispose();
270
}
271
}
272
#endregion
273
274
/**//// <summary>
275
/// 运行存储过程返回DataTable。
276
/// </summary>
277
/// <param name="StoredProcedureName">存储过程名称</param>
278
/// <returns>返回DataTable</returns>
279
函数实现 — — RunStoreDataTable#region 函数实现 — — RunStoreDataTable
280
public DataTable RunStoreDataTable(string StoredProcedureName)
281
{
282
DbDataAdapter da = Factory.CreateDataAdapter(StoredProcedureName);
283
da.SelectCommand.CommandType = CommandType.StoredProcedure;
284
try
285
{
286
DataTable dt = new DataTable();
287
da.Fill(dt);
288
return dt;
289
}
290
catch(Exception ex)
291
{
292
WriteLog.SetErrorMsg("RunStoreDataTable", StoredProcedureName, ex.Message); //处理错误
293
return null;
294
}
295
finally
296
{
297
da.Dispose();
298
}
299
}
300
#endregion
301
302
/**//// <summary>
303
/// 运行存储过程 不返回记录集,用于添加、修改、删除等操作
304
/// </summary>
305
/// <param name="ParameterName">存储过程名称</param>
306
/// <returns></returns>
307
public void RunStore(string StoredProcedureName)
308
{
309
DbCommand cm = Factory.CreateCommand(StoredProcedureName);
310
cm.CommandText = StoredProcedureName;//设置command
311
try
312
{
313
if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )
314
cm.Connection.Open();
315
cm.ExecuteNonQuery();
316
}
317
catch(Exception ex)
318
{
319
WriteLog.SetErrorMsg("RunStore", StoredProcedureName, ex.Message); //处理错误
320
}
321
finally
322
{
323
cm.Connection.Close();
324
}
325
}
326
#endregion
327
}
328
}
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Data;5
using System.Data.Common;6
using JYK;7

8

9
namespace JYK.DataAccessLibrary10


{11
public class DataAccessLayerSP12

{13

属性#region 属性14
private static string errorMsg; //出错信息15
private static bool isShowErrorSQL; //是否显示出错的查询语句(包括存储过程名程)16
private DbCommand cm ; //建立Command对象17
18

/**//// <summary>19
/// 读取出错信息20
/// </summary>21
public string ErrorMsg 22

{23

get
{return errorMsg;}24
}25

26

/**//// <summary>27
/// 修改连接字符串,在同时访问两个或两个以上的数据库的时候使用28
/// </summary>29
public string cnString 30

{31

set
{cm.Connection.ConnectionString = value;}32

get
{return cm.Connection.ConnectionString;}33
}34

35

/**//// <summary>36
/// 释放资源~37
/// </summary>38
public void Dispose()39

{40
errorMsg = null;41
cm.Parameters.Clear();42
cm.Connection.Close();43
cm.Connection.Dispose();44
cm.Dispose();45
}46
#endregion47

48
public DataAccessLayerSP() //构造函数49

{50
//获取连接字符串51
cm = Factory.CreateCommand();52
cm.CommandType = CommandType.StoredProcedure;53
//初始化错误信息54
errorMsg = "";55

56
//本地运行,显示出错的查询语句(包括存储过程名程)57
isShowErrorSQL = WebConfig.isShowErrorSQL(); 58
59
}60
61
//存储过程的参数部分62

存储过程的参数部分——清除和添加参数#region 存储过程的参数部分——清除和添加参数63

64

清除参数#region 清除参数65

/**//// <summary>66
/// 清除Command的存储过程的参数。67
/// </summary>68
public void ClearParameter()69

{cm.Parameters.Clear();}70
#endregion71
72
//int: tinyint、smallint73
//bigint:74
//bool: bit75
//double: float、real76
//string: char、nchar、varchar、nvarchar、uniqueidentifier、smalldatetime、datetime77
//string: ntext、text78

79
//decimal:从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。80
//numeric:功能上等同于 decimal。81
//decimal: smallmoney、money82

83
//二进制84
// binary、varbinary、image85

86

输入型的参数 int 、double、decimal、nvarChar、、、#region 输入型的参数 int 、double、decimal、nvarChar、、、87

int#region int88

/**//// <summary>89
/// 添加int型的参数。90
/// </summary>91
/// <param name="ParameterName">参数名称。比如 @UserName</param>92
/// <param name="ParameterValue">参数值</param>93
public void addNewParameter(string ParameterName,int ParameterValue)94

{95
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName,SqlDbType.Int,4); //添加存储过程的参数96
cm.Parameters[ParameterName].Value=ParameterValue; //负值97
//设置方向取默认值——输入98
}99
#endregion 100
101

double#region double102

/**//// <summary>103
/// 添加小数参数,double104
/// </summary>105
/// <param name="ParameterName">参数名称。比如 @UserName</param>106
/// <param name="ParameterValue">参数值</param>107
public void addNewParameter(string ParameterName,double ParameterValue )108

{109
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Float); //添加存储过程的参数110
cm.Parameters[ParameterName].Value=ParameterValue; //负值111
}112
#endregion 113
114

decimal#region decimal115

/**//// <summary>116
/// 添加金额参数,方向是输入(input)。decimal117
/// </summary>118
/// <param name="ParameterName">参数名称。比如 @UserName</param>119
/// <param name="ParameterValue">参数值</param>120
public void addNewParameter(string ParameterName,decimal ParameterValue )121

{122
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Decimal); //添加存储过程的参数123
cm.Parameters[ParameterName].Value=ParameterValue; //负值124
}125
#endregion 126
127

nvarChar#region nvarChar128

/**//// <summary>129
/// 添加nvarChar型的参数。方向是输入(input)130
/// </summary>131
/// <param name="ParameterName">参数名称。比如 @UserName</param>132
/// <param name="ParameterValue">参数值</param>133
/// <param name="size">参数大小</param>134
public void addNewParameter(string ParameterName,string ParameterValue,int size)135

{136
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NVarChar, size); //添加存储过程的参数137
cm.Parameters[ParameterName].Value=ParameterValue; //负值138
}139
#endregion 140
141

nText#region nText142

/**//// <summary>143
/// 添加nText型的参数。方向是输入(input)144
/// </summary>145
/// <param name="ParameterName">参数名称。比如 @UserName</param>146
/// <param name="ParameterValue">参数值</param>147
public void addNewParameter(string ParameterName,string ParameterValue)148

{149
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NText); //添加存储过程的参数150
cm.Parameters[ParameterName].Value=ParameterValue; //负值151
}152

153
#endregion 154
155

bit#region bit156

/**//// <summary>157
/// 添加bit型的参数。方向是输入(input)158
/// </summary>159
/// <param name="ParameterName">参数名称。比如 @UserName</param>160
/// <param name="ParameterValue">参数值</param>161
public void addNewParameter(string ParameterName,bool ParameterValue)162

{163
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Bit); //添加存储过程的参数164
cm.Parameters[ParameterName].Value=ParameterValue; //负值165
}166
#endregion 167
168
#endregion169

170

输出型的参数#region 输出型的参数 171
172

/**//// <summary>173
/// 添加输出型的参数。只支持常用的几个参数类型,如果需要可以扩充。174
/// </summary>175
/// <param name="ParameterName">参数名称。比如 @UserName</param>176
/// <param name="ParameterValue">参数的类型</param>177
public void addNewParameter(string ParameterName,JYK.ParameterKind kind)178

{179
switch(kind)180

{181
case ParameterKind.Int :182
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Int); //添加存储过程的参数183
break;184
case ParameterKind.Double:185
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Float); //添加存储过程的参数186
break;187
case ParameterKind.Decimal :188
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Decimal); //添加存储过程的参数189
break;190
case ParameterKind.NVarChar :191
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NVarChar, 4000); //添加存储过程的参数192
break;193
case ParameterKind.Bit :194
((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Bit); //添加存储过程的参数195
break;196
}197
cm.Parameters[ParameterName].Direction= ParameterDirection.Output; //设置方向198
}199
200
#endregion201

202
#endregion203

204

存储过程的参数部分——取参数的返回值#region 存储过程的参数部分——取参数的返回值205

206

/**//// <summary>207
/// 按序号返回参数值,一般在执行完存储过程后使用208
/// </summary>209
/// <param name="ParameterIndex">序号</param>210
/// <returns>返回参数的内容</returns>211
public string this[int ParameterIndex]212

{213

get
{return cm.Parameters[ParameterIndex].Value.ToString(); }214
}215

216

/**//// <summary>217
/// 按名称返回参数值,一般在执行完存储过程后使用218
/// </summary>219
/// <param name="ParameterName">参数名称。比如 @UserName</param>220
/// <returns>返回参数的内容</returns>221
public string this[string ParameterName]222

{223

get
{return cm.Parameters[ParameterName].Value.ToString(); }224
}225
#endregion226

227

存储过程的参数部分——修改参数值#region 存储过程的参数部分——修改参数值228

/**//// <summary>229
/// 按序号修改参数值,一般在一次添加多条记录时用。230
/// </summary>231
/// <param name="ParameterIndex">序号</param>232
public void setParameter(int ParameterIndex,string parameterValue)233

{ cm.Parameters[ParameterIndex].Value = parameterValue;}234

235

/**//// <summary>236
/// 按名称修改参数值,一般在一次添加多条记录时用237
/// </summary>238
/// <param name="ParameterName">参数名称。比如 @UserName</param>239
public void setParameter(string ParameterName,string parameterValue)240

{ cm.Parameters[ParameterName].Value = parameterValue;}241
#endregion242

243
//存储过程部分244

运行存储过程返回记录(DataSet、DataTable、不返回记录集)#region 运行存储过程返回记录(DataSet、DataTable、不返回记录集)245

246

/**//// <summary>247
/// 运行存储过程返回DataSet。DataSet里面可以是多个表(DateTable)248
/// </summary>249
/// <param name="StoredProcedureName">存储过程名称</param>250
/// <returns>返回DataSet</returns>251

函数实现 — — RunStoreDataSet#region 函数实现 — — RunStoreDataSet252
public DataSet RunStoreDataSet(string StoredProcedureName)253

{254
DbDataAdapter da = Factory.CreateDataAdapter(StoredProcedureName);255
da.SelectCommand.CommandType = CommandType.StoredProcedure;256
try257

{258
DataSet DS = new DataSet();259
da.Fill(DS);260
return DS;261
}262
catch(Exception ex)263

{264
WriteLog.SetErrorMsg("RunStoreDataSet", StoredProcedureName, ex.Message); //处理错误265
return null;266
}267
finally268

{269
da.Dispose();270
}271
}272
#endregion273

274

/**//// <summary>275
/// 运行存储过程返回DataTable。276
/// </summary>277
/// <param name="StoredProcedureName">存储过程名称</param>278
/// <returns>返回DataTable</returns>279

函数实现 — — RunStoreDataTable#region 函数实现 — — RunStoreDataTable280
public DataTable RunStoreDataTable(string StoredProcedureName)281

{282
DbDataAdapter da = Factory.CreateDataAdapter(StoredProcedureName);283
da.SelectCommand.CommandType = CommandType.StoredProcedure;284
try285

{286
DataTable dt = new DataTable();287
da.Fill(dt);288
return dt;289
}290
catch(Exception ex)291

{292
WriteLog.SetErrorMsg("RunStoreDataTable", StoredProcedureName, ex.Message); //处理错误293
return null;294
}295
finally296

{297
da.Dispose();298
}299
}300
#endregion301
302

/**//// <summary>303
/// 运行存储过程 不返回记录集,用于添加、修改、删除等操作304
/// </summary>305
/// <param name="ParameterName">存储过程名称</param>306
/// <returns></returns>307
public void RunStore(string StoredProcedureName)308

{309
DbCommand cm = Factory.CreateCommand(StoredProcedureName);310
cm.CommandText = StoredProcedureName;//设置command311
try312

{313
if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )314
cm.Connection.Open();315
cm.ExecuteNonQuery();316
}317
catch(Exception ex)318

{319
WriteLog.SetErrorMsg("RunStore", StoredProcedureName, ex.Message); //处理错误320
}321
finally322

{323
cm.Connection.Close();324
}325
}326
#endregion327
}328
}这里没有使用静态函数的方式,目的是为了方便添加存储过程的参数。
浙公网安备 33010602011771号