您的位置:首页 > 数据库

C# 数据库访问通用类 (ADO.NET)

2011-03-18 17:12 435 查看
SqlDbHelper.cs

viewsource

print?

001
using
System;
002
using
System.Collections.Generic;
003
using
System.Text;
004
using
System.Data;
005
using
System.Data.SqlClient;
006
using
System.Configuration;
007
008
namespace
ADODoNETDemo
009
{
010
///<summary>
011
///针对SQLServer数据库操作的通用类
012
///作者:周公
013
///日期:2009-01-08
014
///Version:1.0
015
///</summary>
016
public
class
SqlDbHelper
017
{
018
private
string
connectionString;
019
///<summary>
020
///设置数据库连接字符串
021
///</summary>
022
public
string
ConnectionString
023
{
024
set
{connectionString=value;}
025
}
026
///<summary>
027
///构造函数
028
///</summary>
029
public
SqlDbHelper()
030
:
this
(ConfigurationManager.ConnectionStrings[
"Conn"
].ConnectionString)
031
{
032
033
}
034
///<summary>
035
///构造函数
036
///</summary>
037
///<paramname="connectionString">数据库连接字符串</param>
038
public
SqlDbHelper(
string
connectionString)
039
{
040
this
.connectionString=connectionString;
041
}
042
///<summary>
043
///执行一个查询,并返回结果集
044
///</summary>
045
///<paramname="sql">要执行的查询SQL文本命令</param>
046
///<returns>返回查询结果集</returns>
047
public
DataTableExecuteDataTable(
string
sql)
048
{
049
return
ExecuteDataTable(sql,CommandType.Text,
null
);
050
}
051
///<summary>
052
///执行一个查询,并返回查询结果
053
///</summary>
054
///<paramname="sql">要执行的SQL语句</param>
055
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
056
///<returns>返回查询结果集</returns>
057
public
DataTableExecuteDataTable(
string
sql,CommandTypecommandType)
058
{
059
return
ExecuteDataTable(sql,commandType,
null
);
060
}
061
///<summary>
062
///执行一个查询,并返回查询结果
063
///</summary>
064
///<paramname="sql">要执行的SQL语句</param>
065
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
066
///<paramname="parameters">Transact-SQL语句或存储过程的参数数组</param>
067
///<returns></returns>
068
public
DataTableExecuteDataTable(
string
sql,CommandTypecommandType,SqlParameter[]parameters)
069
{
070
DataTabledata=
new
DataTable();
//实例化DataTable,用于装载查询结果集
071
using
(SqlConnectionconnection=
new
SqlConnection(connectionString))
072
{
073
using
(SqlCommandcommand=
new
SqlCommand(sql,connection))
074
{
075
command.CommandType=commandType;
//设置command的CommandType为指定的CommandType
076
//如果同时传入了参数,则添加这些参数
077
if
(parameters!=
null
)
078
{
079
foreach
(SqlParameterparameter
in
parameters)
080
{
081
command.Parameters.Add(parameter);
082
}
083
}
084
//通过包含查询SQL的SqlCommand实例来实例化SqlDataAdapter
085
SqlDataAdapteradapter=
new
SqlDataAdapter(command);
086
087
adapter.Fill(data);
//填充DataTable
088
}
089
}
090
return
data;
091
}
092
///<summary>
093
///
094
///</summary>
095
///<paramname="sql">要执行的查询SQL文本命令</param>
096
///<returns></returns>
097
public
SqlDataReaderExecuteReader(
string
sql)
098
{
099
return
ExecuteReader(sql,CommandType.Text,
null
);
100
}
101
///<summary>
102
///
103
///</summary>
104
///<paramname="sql">要执行的SQL语句</param>
105
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
106
///<returns></returns>
107
public
SqlDataReaderExecuteReader(
string
sql,CommandTypecommandType)
108
{
109
return
ExecuteReader(sql,commandType,
null
);
110
}
111
///<summary>
112
///
113
///</summary>
114
///<paramname="sql">要执行的SQL语句</param>
115
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
116
///<paramname="parameters">Transact-SQL语句或存储过程的参数数组</param>
117
///<returns></returns>
118
public
SqlDataReaderExecuteReader(
string
sql,CommandTypecommandType,SqlParameter[]parameters)
119
{
120
SqlConnectionconnection=
new
SqlConnection(connectionString);
121
SqlCommandcommand=
new
SqlCommand(sql,connection);
122
//如果同时传入了参数,则添加这些参数
123
if
(parameters!=
null
)
124
{
125
foreach
(SqlParameterparameter
in
parameters)
126
{
127
command.Parameters.Add(parameter);
128
}
129
}
130
connection.Open();
131
//CommandBehavior.CloseConnection参数指示关闭Reader对象时关闭与其关联的Connection对象
132
return
command.ExecuteReader(CommandBehavior.CloseConnection);
133
}
134
///<summary>
135
///
136
///</summary>
137
///<paramname="sql">要执行的查询SQL文本命令</param>
138
///<returns></returns>
139
public
ObjectExecuteScalar(
string
sql)
140
{
141
return
ExecuteScalar(sql,CommandType.Text,
null
);
142
}
143
///<summary>
144
///
145
///</summary>
146
///<paramname="sql">要执行的SQL语句</param>
147
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
148
///<returns></returns>
149
public
ObjectExecuteScalar(
string
sql,CommandTypecommandType)
150
{
151
return
ExecuteScalar(sql,commandType,
null
);
152
}
153
///<summary>
154
///
155
///</summary>
156
///<paramname="sql">要执行的SQL语句</param>
157
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
158
///<paramname="parameters">Transact-SQL语句或存储过程的参数数组</param>
159
///<returns></returns>
160
public
ObjectExecuteScalar(
string
sql,CommandTypecommandType,SqlParameter[]parameters)
161
{
162
object
result=
null
;
163
using
(SqlConnectionconnection=
new
SqlConnection(connectionString))
164
{
165
using
(SqlCommandcommand=
new
SqlCommand(sql,connection))
166
{
167
command.CommandType=commandType;
//设置command的CommandType为指定的CommandType
168
//如果同时传入了参数,则添加这些参数
169
if
(parameters!=
null
)
170
{
171
foreach
(SqlParameterparameter
in
parameters)
172
{
173
command.Parameters.Add(parameter);
174
}
175
}
176
connection.Open();
//打开数据库连接
177
result=command.ExecuteScalar();
178
}
179
}
180
return
result;
//返回查询结果的第一行第一列,忽略其它行和列
181
}
182
///<summary>
183
///对数据库执行增删改操作
184
///</summary>
185
///<paramname="sql">要执行的查询SQL文本命令</param>
186
///<returns></returns>
187
public
int
ExecuteNonQuery(
string
sql)
188
{
189
return
ExecuteNonQuery(sql,CommandType.Text,
null
);
190
}
191
///<summary>
192
///对数据库执行增删改操作
193
///</summary>
194
///<paramname="sql">要执行的SQL语句</param>
195
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
196
///<returns></returns>
197
public
int
ExecuteNonQuery(
string
sql,CommandTypecommandType)
198
{
199
return
ExecuteNonQuery(sql,commandType,
null
);
200
}
201
///<summary>
202
///对数据库执行增删改操作
203
///</summary>
204
///<paramname="sql">要执行的SQL语句</param>
205
///<paramname="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
206
///<paramname="parameters">Transact-SQL语句或存储过程的参数数组</param>
207
///<returns></returns>
208
public
int
ExecuteNonQuery(
string
sql,CommandTypecommandType,SqlParameter[]parameters)
209
{
210
int
count=0;
211
using
(SqlConnectionconnection=
new
SqlConnection(connectionString))
212
{
213
using
(SqlCommandcommand=
new
SqlCommand(sql,connection))
214
{
215
command.CommandType=commandType;
//设置command的CommandType为指定的CommandType
216
//如果同时传入了参数,则添加这些参数
217
if
(parameters!=
null
)
218
{
219
foreach
(SqlParameterparameter
in
parameters)
220
{
221
command.Parameters.Add(parameter);
222
}
223
}
224
connection.Open();
//打开数据库连接
225
count=command.ExecuteNonQuery();
226
}
227
}
228
return
count;
//返回执行增删改操作之后,数据库中受影响的行数
229
}
230
///<summary>
231
///返回当前连接的数据库中所有由用户创建的数据库
232
///</summary>
233
///<returns></returns>
234
public
DataTableGetTables()
235
{
236
DataTabledata=
null
;
237
using
(SqlConnectionconnection=
new
SqlConnection(connectionString))
238
{
239
connection.Open();
//打开数据库连接
240
data=connection.GetSchema(
"Tables"
);
241
}
242
return
data;
243
}
244
245
}
246
}

[代码]ADODotNetCRUD.cs

viewsource

print?

001
using
System;
002
using
System.Collections.Generic;
003
using
System.Linq;
004
using
System.Text;
005
using
System.Data.SqlClient;
006
using
System.Data;
007
008
namespace
ADODoNETDemo
009
{
010
///<summary>
011
///用ADO.NET实现CRUD功能
012
///</summary>
013
public
class
ADODotNetCRUD
014
{
015
///<summary>
016
///统计用户总数
017
///</summary>
018
///<returns></returns>
019
public
int
Count()
020
{
021
string
sql=
"selectcount(1)fromUserInfo"
;
022
SqlDbHelperdb=
new
SqlDbHelper();
023
return
int
.Parse(db.ExecuteScalar(sql).ToString());
024
}
025
///<summary>
026
///创建用户
027
///</summary>
028
///<paramname="info">用户实体</param>
029
///<returns></returns>
030
public
bool
Create(UserInfoinfo)
031
{
032
string
sql=
"insertUserInfo(UserName,RealName,Age,Sex,Mobile,Email,Phone)values(@UserName,@RealName,@Age,@Sex,@Mobile,@Email,@Phone)"
;
033
SqlParameter[]paramters=
new
SqlParameter[]{
034
new
SqlParameter(
"@UserName"
,info.UserName),
035
new
SqlParameter(
"@RealName"
,info.RealName),
036
new
SqlParameter(
"@Age"
,info.Age),
037
new
SqlParameter(
"@Sex"
,info.Sex),
038
new
SqlParameter(
"@Mobile"
,info.Mobile),
039
new
SqlParameter(
"@Email"
,info.Email),
040
new
SqlParameter(
"@Phone"
,info.Phone),
041
};
042
SqlDbHelperdb=
new
SqlDbHelper();
043
return
db.ExecuteNonQuery(sql,CommandType.Text,paramters)>0;
044
}
045
///<summary>
046
///读取用户信息
047
///</summary>
048
///<paramname="userId">用户编号</param>
049
///<returns></returns>
050
public
UserInfoRead(
int
userId)
051
{
052
string
sql=
"select*fromUserInfoWhereUserId="
+userId;
053
SqlDbHelperdb=
new
SqlDbHelper();
054
DataTabledata=db.ExecuteDataTable(sql);
055
if
(data.Rows.Count>0)
056
{
057
DataRowrow=data.Rows[0];
058
UserInfoinfo=
new
UserInfo()
059
{
060
UserId=
int
.Parse(row[
"UserId"
].ToString()),
061
UserName=row[
"UserName"
].ToString(),
062
Age=
byte
.Parse(row[
"Age"
].ToString()),
063
Email=row[
"Email"
].ToString(),
064
Mobile=row[
"Mobile"
].ToString(),
065
Phone=row[
"Phone"
].ToString(),
066
RealName=row[
"RealName"
].ToString(),
067
Sex=
bool
.Parse(row[
"Sex"
].ToString())
068
};
069
return
info;
070
}
071
else
072
{
073
return
null
;
074
}
075
}
076
///<summary>
077
///更新用户信息
078
///</summary>
079
///<paramname="info">用户实体</param>
080
///<returns></returns>
081
public
bool
Update(UserInfoinfo)
082
{
083
string
sql=
"updateUserInfosetUserName=@UserName,RealName=@RealName,Age=@Age,Sex=@Sex,Mobile=@Mobile,Email=@Email,Phone=@PhonewhereUserID=@UserID"
;
084
SqlParameter[]paramters=
new
SqlParameter[]{
085
new
SqlParameter(
"@UserName"
,info.UserName),
086
new
SqlParameter(
"@RealName"
,info.RealName),
087
new
SqlParameter(
"@Age"
,info.Age),
088
new
SqlParameter(
"@Sex"
,info.Sex),
089
new
SqlParameter(
"@Mobile"
,info.Mobile),
090
new
SqlParameter(
"@Email"
,info.Email),
091
new
SqlParameter(
"@Phone"
,info.Phone),
092
new
SqlParameter(
"@UserID"
,info.UserId),
093
};
094
SqlDbHelperdb=
new
SqlDbHelper();
095
return
db.ExecuteNonQuery(sql,CommandType.Text,paramters)>0;
096
}
097
///<summary>
098
///删除用户
099
///</summary>
100
///<paramname="userId">用户编号</param>
101
///<returns></returns>
102
public
bool
Delete(
int
userId)
103
{
104
string
sql=
"deletefromUserInfowhereUserId="
+userId;
105
SqlDbHelperdb=
new
SqlDbHelper();
106
return
db.ExecuteNonQuery(sql)>0;
107
}
108
///<summary>
109
///获取用户表中编号最大的用户
110
///</summary>
111
///<returns></returns>
112
public
int
GetMaxUserId()
113
{
114
string
sql=
"selectmax(userId)fromUserInfo"
;
115
SqlDbHelperdb=
new
SqlDbHelper();
116
return
int
.Parse(db.ExecuteScalar(sql).ToString());
117
}
118
}
119
}

[代码]单元测试ADODotNetTest.cs

viewsource

print?

01
using
System;
02
using
System.Collections.Generic;
03
using
System.Linq;
04
using
System.Text;
05
using
ADODoNETDemo;
06
using
NUnit.Framework;
07
08
namespace
NUnitTest
09
{
10
[TestFixture]
11
class
ADODotNetTest
12
{
13
private
ADODotNetCRUDinstance=
null
;
14
[SetUp]
15
public
void
Initialize()
16
{
17
instance=
new
ADODotNetCRUD();
18
}
19
[Test]
20
///<summary>
21
///统计用户总数
22
///</summary>
23
///<returns></returns>
24
public
void
Count()
25
{
26
Assert.Greater(instance.Count(),0);
27
}
28
[Test]
29
///<summary>
30
///创建用户
31
///</summary>
32
///<paramname="info">用户实体</param>
33
///<returns></returns>
34
public
void
Create()
35
{
36
UserInfoinfo=
new
UserInfo()
37
{
38
Age=12,
39
Email=
"zzz@ccav.com"
,
40
Mobile=
"13812345678"
,
41
Phone=
"01012345678"
,
42
RealName=
"测试"
+DateTime.Now.Millisecond.ToString(),
43
Sex=
true
,
44
UserName=
"zhoufoxcn"
+DateTime.Now.Millisecond.ToString()
45
};
46
instance.Create(info);
47
}
48
[Test]
49
///<summary>
50
///读取用户信息
51
///</summary>
52
///<paramname="userId">用户编号</param>
53
///<returns></returns>
54
public
void
Read()
55
{
56
UserInfoinfo=instance.Read(1);
57
Assert.NotNull(info);
58
}
59
[Test]
60
///<summary>
61
///更新用户信息
62
///</summary>
63
///<paramname="info">用户实体</param>
64
///<returns></returns>
65
public
void
Update()
66
{
67
UserInfoinfo=instance.Read(1);
68
info.RealName=
"测试"
+DateTime.Now.Millisecond.ToString();
69
instance.Update(info);
70
}
71
[Test]
72
///<summary>
73
///删除用户
74
///</summary>
75
///<paramname="userId">用户编号</param>
76
///<returns></returns>
77
public
void
DeleteByID()
78
{
79
int
userId=instance.GetMaxUserId();
80
instance.Delete(userId);
81
}
82
}
83
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: