我的数据访问类(第二版)—— for .net2.0 (二)
2007-04-29 21:43 金色海洋(jyk) 阅读(2305) 评论(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

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

287


288

289

290

291

292


293

294



295

296

297

298

299



300

301

302

303

304

305

306

307

308

309

310



311

312

313

314

315



316

317

318

319

320

321

322

323

324

325


326

327


328

329

330

331

332

333

334

335



336

337

338

339

340

341

342

343



344

345

346

347

348

349

350

351



352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369


370

371

372

373

374

375

376

377

378



379

380

381

382

383

384

385



386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

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
}

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

287

288

289

290

291



292

293

294

295

296



297

298

299

300

301

302


303

304

305

306

307

308



309

310

311

312



313

314

315

316

317

318



319

320

321

322



323

324

325

326

327

328

这里没有使用静态函数的方式,目的是为了方便添加存储过程的参数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!