我的数据访问函数库的源代码(四)—— 存储过程部分,包括存储过程的参数的封装
2006-08-16 04:34 金色海洋(jyk) 阅读(1484) 评论(2) 编辑 收藏 举报
存储过程部分,包括存储过程的参数。
/* 2008 4 25 更新 */
我的数据访问函数库的源码。整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧。
第四部分:存储过程部分,包括存储过程的参数
,主要是对存储过程的参数的封装。
我的数据访问函数库的源码。整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧。
第四部分:存储过程部分,包括存储过程的参数
1
//存储过程的参数部分
2
存储过程的参数部分——清除和添加参数#region 存储过程的参数部分——清除和添加参数
3
4
清除参数#region 清除参数
5
/**//// <summary>
6
/// 清除SqlCommand的存储过程的参数。
7
/// </summary>
8
public void ClearParameter()
9
{cm.Parameters.Clear();}
10
#endregion
11
12
//int: tinyint、smallint
13
//bigint:
14
//bool: bit
15
//double: float、real
16
//string: char、nchar、varchar、nvarchar、uniqueidentifier、smalldatetime、datetime
17
//string: ntext、text
18
19
//decimal:从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
20
//numeric:功能上等同于 decimal。
21
//decimal: smallmoney、money
22
23
//二进制
24
// binary、varbinary、image
25
26
输入型的参数 int 、double、decimal、nvarChar、、、#region 输入型的参数 int 、double、decimal、nvarChar、、、
27
int#region int
28
/**//// <summary>
29
/// 添加int型的参数。
30
/// </summary>
31
/// <param name="ParameterName">参数名称。比如 @UserName</param>
32
/// <param name="ParameterValue">参数值</param>
33
public void addNewParameter(string ParameterName,int ParameterValue)
34
{
35
cm.Parameters.Add(ParameterName,SqlDbType.Int,4); //添加存储过程的参数
36
cm.Parameters[ParameterName].Value=ParameterValue; //负值
37
//设置方向取默认值——输入
38
}
39
#endregion
40
41
double#region double
42
/**//// <summary>
43
/// 添加小数参数,double
44
/// </summary>
45
/// <param name="ParameterName">参数名称。比如 @UserName</param>
46
/// <param name="ParameterValue">参数值</param>
47
public void addNewParameter(string ParameterName,double ParameterValue )
48
{
49
cm.Parameters.Add(ParameterName,SqlDbType.Float ); //添加存储过程的参数
50
cm.Parameters[ParameterName].Value=ParameterValue; //负值
51
}
52
#endregion
53
54
decimal#region decimal
55
/**//// <summary>
56
/// 添加金额参数,方向是输入(input)。decimal
57
/// </summary>
58
/// <param name="ParameterName">参数名称。比如 @UserName</param>
59
/// <param name="ParameterValue">参数值</param>
60
public void addNewParameter(string ParameterName,decimal ParameterValue )
61
{
62
cm.Parameters.Add(ParameterName,SqlDbType.Decimal); //添加存储过程的参数
63
cm.Parameters[ParameterName].Value=ParameterValue; //负值
64
}
65
#endregion
66
67
nvarChar#region nvarChar
68
/**//// <summary>
69
/// 添加nvarChar型的参数。方向是输入(input)
70
/// </summary>
71
/// <param name="ParameterName">参数名称。比如 @UserName</param>
72
/// <param name="ParameterValue">参数值</param>
73
/// <param name="size">参数大小</param>
74
public void addNewParameter(string ParameterName,string ParameterValue,int size)
75
{
76
cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,size); //添加存储过程的参数
77
cm.Parameters[ParameterName].Value=ParameterValue; //负值
78
}
79
#endregion
80
81
nText#region nText
82
/**//// <summary>
83
/// 添加nText型的参数。方向是输入(input)
84
/// </summary>
85
/// <param name="ParameterName">参数名称。比如 @UserName</param>
86
/// <param name="ParameterValue">参数值</param>
87
public void addNewParameter(string ParameterName,string ParameterValue)
88
{
89
cm.Parameters.Add(ParameterName,SqlDbType.NText); //添加存储过程的参数
90
cm.Parameters[ParameterName].Value=ParameterValue; //负值
91
}
92
93
#endregion
94
95
bit#region bit
96
/**//// <summary>
97
/// 添加bit型的参数。方向是输入(input)
98
/// </summary>
99
/// <param name="ParameterName">参数名称。比如 @UserName</param>
100
/// <param name="ParameterValue">参数值</param>
101
public void addNewParameter(string ParameterName,bool ParameterValue)
102
{
103
cm.Parameters.Add(ParameterName,SqlDbType.Bit); //添加存储过程的参数
104
cm.Parameters[ParameterName].Value=ParameterValue; //负值
105
}
106
#endregion
107
108
#endregion
109
110
输出型的参数#region 输出型的参数
111
112
/**//// <summary>
113
/// 添加输出型的参数。只支持常用的几个参数类型,如果需要可以扩充。
114
/// </summary>
115
/// <param name="ParameterName">参数名称。比如 @UserName</param>
116
/// <param name="ParameterValue">参数的类型</param>
117
public void addNewParameter(string ParameterName,HBS.ParameterKind kind)
118
{
119
switch(kind)
120
{
121
case ParameterKind.Int :
122
cm.Parameters.Add(ParameterName,SqlDbType.Int); //添加存储过程的参数
123
break;
124
case ParameterKind.Double:
125
cm.Parameters.Add(ParameterName,SqlDbType.Float); //添加存储过程的参数
126
break;
127
case ParameterKind.Decimal :
128
cm.Parameters.Add(ParameterName,SqlDbType.Decimal); //添加存储过程的参数
129
break;
130
case ParameterKind.NVarChar :
131
cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,4000); //添加存储过程的参数
132
break;
133
case ParameterKind.Bit :
134
cm.Parameters.Add(ParameterName,SqlDbType.Bit); //添加存储过程的参数
135
break;
136
}
137
cm.Parameters[ParameterName].Direction= ParameterDirection.Output; //设置方向
138
}
139
140
#endregion
141
142
#endregion
143
144
存储过程的参数部分——取参数的返回值#region 存储过程的参数部分——取参数的返回值
145
146
/**//// <summary>
147
/// 按序号返回参数值,一般在执行完存储过程后使用
148
/// </summary>
149
/// <param name="ParameterIndex">序号</param>
150
/// <returns>返回参数的内容</returns>
151
public string getParameter(int ParameterIndex)
152
{
153
return cm.Parameters[ParameterIndex].Value.ToString();
154
}
155
156
/**//// <summary>
157
/// 按名称返回参数值,一般在执行完存储过程后使用
158
/// </summary>
159
/// <param name="ParameterName">参数名称。比如 @UserName</param>
160
/// <returns>返回参数的内容</returns>
161
public string getParameter(string ParameterName)
162
{
163
return cm.Parameters[ParameterName].Value.ToString();
164
}
165
#endregion
166
167
存储过程的参数部分——修改参数值#region 存储过程的参数部分——修改参数值
168
/**//// <summary>
169
/// 按序号修改参数值,一般在一次添加多条记录时用。
170
/// </summary>
171
/// <param name="ParameterIndex">序号</param>
172
public void setParameter(int ParameterIndex,string parameterValue)
173
{ cm.Parameters[ParameterIndex].Value = parameterValue;}
174
175
/**//// <summary>
176
/// 按名称修改参数值,一般在一次添加多条记录时用
177
/// </summary>
178
/// <param name="ParameterName">参数名称。比如 @UserName</param>
179
public void setParameter(string ParameterName,string parameterValue)
180
{ cm.Parameters[ParameterName].Value = parameterValue;}
181
#endregion
182
183
//存储过程部分
184
运行存储过程返回记录(DataSet、DataTable、不返回记录集)#region 运行存储过程返回记录(DataSet、DataTable、不返回记录集)
185
186
/**//// <summary>
187
/// 运行存储过程返回DataSet。DataSet里面可以是多个表(DateTable)
188
/// </summary>
189
/// <param name="StoredProcedureName">存储过程名称</param>
190
/// <returns>返回DataSet</returns>
191
函数实现 — — RunStoreDataSet#region 函数实现 — — RunStoreDataSet
192
public DataSet RunStoreDataSet(string StoredProcedureName)
193
{
194
SetCommand(StoredProcedureName,2); //设置command
195
SqlDataAdapter da = new SqlDataAdapter(cm);
196
try
197
{
198
DataSet DS = new DataSet();
199
da.Fill(DS);
200
return DS;
201
}
202
catch(Exception ex)
203
{
204
SetErrorMsg("RunStoreDataSet",StoredProcedureName,ex.Message ); //处理错误
205
return null;
206
}
207
finally
208
{
209
da.Dispose();
210
}
211
}
212
#endregion
213
214
/**//// <summary>
215
/// 运行存储过程返回DataTable。
216
/// </summary>
217
/// <param name="StoredProcedureName">存储过程名称</param>
218
/// <returns>返回DataTable</returns>
219
函数实现 — — RunStoreDataTable#region 函数实现 — — RunStoreDataTable
220
public DataTable RunStoreDataTable(string StoredProcedureName)
221
{
222
SetCommand(StoredProcedureName,2); //设置command
223
SqlDataAdapter da = new SqlDataAdapter(cm);
224
try
225
{
226
DataTable dt = new DataTable();
227
da.Fill(dt);
228
return dt;
229
}
230
catch(Exception ex)
231
{
232
SetErrorMsg("RunStoreDataTable",StoredProcedureName,ex.Message ); //处理错误
233
return null;
234
}
235
finally
236
{
237
da.Dispose();
238
}
239
}
240
#endregion
241
242
/**//// <summary>
243
/// 运行存储过程 不返回记录集,用于添加、修改、删除等操作
244
/// </summary>
245
/// <param name="ParameterName">存储过程名称</param>
246
/// <returns></returns>
247
public void RunStore(string StoredProcedureName)
248
{
249
SetCommand(StoredProcedureName,2); //设置command
250
try
251
{
252
if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )
253
cm.Connection.Open();
254
cm.ExecuteNonQuery();
255
}
256
catch(Exception ex)
257
{
258
SetErrorMsg("RunStore",StoredProcedureName,ex.Message ); //处理错误
259
}
260
finally
261
{
262
if (!isUseTrans)
263
cm.Connection.Close();
264
}
265
266
}
267
268
#endregion
269

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

下载全部源文件。
【推荐】国内首个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 让容器管理更轻松!