C# 数据库访问通用类 (ADO.NET)
2011-03-18 17:12
435 查看
SqlDbHelper.cs
viewsource
print?
viewsource
print?
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
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
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 | } |
相关文章推荐
- C# 数据库访问通用类 (ADO.NET)
- C# 数据库访问通用类 (ADO.NET)
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 利用ADO.NET的体系架构打造通用的数据库访问通用类 .
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 利用ADO.NET的体系架构打造通用的数据库访问通用类(续)
- C#使用ADO.NET访问数据库(一)
- ADO.NET数据库访问通用类(SQLHelper第一版)
- C#数据库编程 之 ADO.NET的数据库访问小结
- 使用C#和ADO.NET数据库访问技术,实现CRUD--20180127
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- C#.NET访问数据库的通用类(Access篇)
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- A.12-C# ADO.NET 数据库访问
- 利用ADO.NET的体系架构打造通用的数据库访问通用类 .
- 利用ADO.NET的体系架构打造通用的数据库访问通用类