SqlDbHelper.cs
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 |
/// 针对SQL Server数据库操作的通用类
|
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 |
/// <param name="connectionString">数据库连接字符串</param>
|
038 |
public SqlDbHelper(string connectionString)
|
039 |
{
|
040 |
this.connectionString = connectionString;
|
041 |
}
|
042 |
/// <summary>
|
043 |
/// 执行一个查询,并返回结果集
|
044 |
/// </summary>
|
045 |
/// <param name="sql">要执行的查询SQL文本命令</param>
|
046 |
/// <returns>返回查询结果集</returns>
|
047 |
public DataTable ExecuteDataTable(string sql)
|
048 |
{
|
049 |
return ExecuteDataTable(sql, CommandType.Text, null);
|
050 |
}
|
051 |
/// <summary>
|
052 |
/// 执行一个查询,并返回查询结果
|
053 |
/// </summary>
|
054 |
/// <param name="sql">要执行的SQL语句</param>
|
055 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
056 |
/// <returns>返回查询结果集</returns>
|
057 |
public DataTable ExecuteDataTable(string sql, CommandType commandType)
|
058 |
{
|
059 |
return ExecuteDataTable(sql, commandType, null);
|
060 |
}
|
061 |
/// <summary>
|
062 |
/// 执行一个查询,并返回查询结果
|
063 |
/// </summary>
|
064 |
/// <param name="sql">要执行的SQL语句</param>
|
065 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
066 |
/// <param name="parameters">Transact-SQL 语句或存储过程的参数数组</param>
|
067 |
/// <returns></returns>
|
068 |
public DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters)
|
069 |
{
|
070 |
DataTable data = new DataTable();//实例化DataTable,用于装载查询结果集
|
071 |
using (SqlConnection connection = new SqlConnection(connectionString))
|
072 |
{
|
073 |
using (SqlCommand command = new SqlCommand(sql, connection))
|
074 |
{
|
075 |
command.CommandType = commandType;//设置command的CommandType为指定的CommandType
|
076 |
//如果同时传入了参数,则添加这些参数
|
077 |
if (parameters != null)
|
078 |
{
|
079 |
foreach (SqlParameter parameter in parameters)
|
080 |
{
|
081 |
command.Parameters.Add(parameter);
|
082 |
}
|
083 |
}
|
084 |
//通过包含查询SQL的SqlCommand实例来实例化SqlDataAdapter
|
085 |
SqlDataAdapter adapter = new SqlDataAdapter(command);
|
086 |
|
087 |
adapter.Fill(data);//填充DataTable
|
088 |
}
|
089 |
}
|
090 |
return data;
|
091 |
}
|
092 |
/// <summary>
|
093 |
///
|
094 |
/// </summary>
|
095 |
/// <param name="sql">要执行的查询SQL文本命令</param>
|
096 |
/// <returns></returns>
|
097 |
public SqlDataReader ExecuteReader(string sql)
|
098 |
{
|
099 |
return ExecuteReader(sql, CommandType.Text, null);
|
100 |
}
|
101 |
/// <summary>
|
102 |
///
|
103 |
/// </summary>
|
104 |
/// <param name="sql">要执行的SQL语句</param>
|
105 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
106 |
/// <returns></returns>
|
107 |
public SqlDataReader ExecuteReader(string sql, CommandType commandType)
|
108 |
{
|
109 |
return ExecuteReader(sql, commandType, null);
|
110 |
}
|
111 |
/// <summary>
|
112 |
///
|
113 |
/// </summary>
|
114 |
/// <param name="sql">要执行的SQL语句</param>
|
115 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
116 |
/// <param name="parameters">Transact-SQL 语句或存储过程的参数数组</param>
|
117 |
/// <returns></returns>
|
118 |
public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
|
119 |
{
|
120 |
SqlConnection connection = new SqlConnection(connectionString);
|
121 |
SqlCommand command = new SqlCommand(sql, connection);
|
122 |
//如果同时传入了参数,则添加这些参数
|
123 |
if (parameters != null)
|
124 |
{
|
125 |
foreach (SqlParameter parameter 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 |
/// <param name="sql">要执行的查询SQL文本命令</param>
|
138 |
/// <returns></returns>
|
139 |
public Object ExecuteScalar(string sql)
|
140 |
{
|
141 |
return ExecuteScalar(sql, CommandType.Text, null);
|
142 |
}
|
143 |
/// <summary>
|
144 |
///
|
145 |
/// </summary>
|
146 |
/// <param name="sql">要执行的SQL语句</param>
|
147 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
148 |
/// <returns></returns>
|
149 |
public Object ExecuteScalar(string sql, CommandType commandType)
|
150 |
{
|
151 |
return ExecuteScalar(sql, commandType, null);
|
152 |
}
|
153 |
/// <summary>
|
154 |
///
|
155 |
/// </summary>
|
156 |
/// <param name="sql">要执行的SQL语句</param>
|
157 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
158 |
/// <param name="parameters">Transact-SQL 语句或存储过程的参数数组</param>
|
159 |
/// <returns></returns>
|
160 |
public Object ExecuteScalar(string sql, CommandType commandType, SqlParameter[] parameters)
|
161 |
{
|
162 |
object result = null;
|
163 |
using (SqlConnection connection = new SqlConnection(connectionString))
|
164 |
{
|
165 |
using (SqlCommand command = new SqlCommand(sql, connection))
|
166 |
{
|
167 |
command.CommandType = commandType;//设置command的CommandType为指定的CommandType
|
168 |
//如果同时传入了参数,则添加这些参数
|
169 |
if (parameters != null)
|
170 |
{
|
171 |
foreach (SqlParameter parameter 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 |
/// <param name="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 |
/// <param name="sql">要执行的SQL语句</param>
|
195 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
196 |
/// <returns></returns>
|
197 |
public int ExecuteNonQuery(string sql, CommandType commandType)
|
198 |
{
|
199 |
return ExecuteNonQuery(sql, commandType, null);
|
200 |
}
|
201 |
/// <summary>
|
202 |
/// 对数据库执行增删改操作
|
203 |
/// </summary>
|
204 |
/// <param name="sql">要执行的SQL语句</param>
|
205 |
/// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>
|
206 |
/// <param name="parameters">Transact-SQL 语句或存储过程的参数数组</param>
|
207 |
/// <returns></returns>
|
208 |
public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
|
209 |
{
|
210 |
int count = 0;
|
211 |
using (SqlConnection connection = new SqlConnection(connectionString))
|
212 |
{
|
213 |
using (SqlCommand command = new SqlCommand(sql, connection))
|
214 |
{
|
215 |
command.CommandType = commandType;//设置command的CommandType为指定的CommandType
|
216 |
//如果同时传入了参数,则添加这些参数
|
217 |
if (parameters != null)
|
218 |
{
|
219 |
foreach (SqlParameter parameter 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 DataTable GetTables()
|
235 |
{
|
236 |
DataTable data = null;
|
237 |
using (SqlConnection connection = 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 = "select count(1) from UserInfo";
|
022 |
SqlDbHelper db = new SqlDbHelper();
|
023 |
return int.Parse(db.ExecuteScalar(sql).ToString());
|
024 |
}
|
025 |
/// <summary>
|
026 |
/// 创建用户
|
027 |
/// </summary>
|
028 |
/// <param name="info">用户实体</param>
|
029 |
/// <returns></returns>
|
030 |
public bool Create(UserInfo info)
|
031 |
{
|
032 |
string sql = "insert UserInfo(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 |
SqlDbHelper db = new SqlDbHelper();
|
043 |
return db.ExecuteNonQuery(sql, CommandType.Text, paramters) > 0;
|
044 |
}
|
045 |
/// <summary>
|
046 |
/// 读取用户信息
|
047 |
/// </summary>
|
048 |
/// <param name="userId">用户编号</param>
|
049 |
/// <returns></returns>
|
050 |
public UserInfo Read(int userId)
|
051 |
{
|
052 |
string sql = "select * from UserInfo Where UserId="+userId;
|
053 |
SqlDbHelper db = new SqlDbHelper();
|
054 |
DataTable data = db.ExecuteDataTable(sql);
|
055 |
if (data.Rows.Count > 0)
|
056 |
{
|
057 |
DataRow row = data.Rows[0];
|
058 |
UserInfo info = 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 |
/// <param name="info">用户实体</param>
|
080 |
/// <returns></returns>
|
081 |
public bool Update(UserInfo info)
|
082 |
{
|
083 |
string sql = "update UserInfo set UserName=@UserName,RealName=@RealName,Age=@Age,Sex=@Sex,Mobile=@Mobile,Email=@Email,Phone=@Phone where UserID=@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 |
SqlDbHelper db = new SqlDbHelper();
|
095 |
return db.ExecuteNonQuery(sql, CommandType.Text, paramters) > 0;
|
096 |
}
|
097 |
/// <summary>
|
098 |
/// 删除用户
|
099 |
/// </summary>
|
100 |
/// <param name="userId">用户编号</param>
|
101 |
/// <returns></returns>
|
102 |
public bool Delete(int userId)
|
103 |
{
|
104 |
string sql = "delete from UserInfo where UserId=" + userId;
|
105 |
SqlDbHelper db = 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 = "select max(userId) from UserInfo";
|
115 |
SqlDbHelper db = 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 ADODotNetCRUD instance = 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 |
/// <param name="info">用户实体</param>
|
33 |
/// <returns></returns>
|
34 |
public void Create()
|
35 |
{
|
36 |
UserInfo info = 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 |
/// <param name="userId">用户编号</param>
|
53 |
/// <returns></returns>
|
54 |
public void Read()
|
55 |
{
|
56 |
UserInfo info = instance.Read(1);
|
57 |
Assert.NotNull(info);
|
58 |
}
|
59 |
[Test]
|
60 |
/// <summary>
|
61 |
/// 更新用户信息
|
62 |
/// </summary>
|
63 |
/// <param name="info">用户实体</param>
|
64 |
/// <returns></returns>
|
65 |
public void Update()
|
66 |
{
|
67 |
UserInfo info = instance.Read(1);
|
68 |
info.RealName = "测试" + DateTime.Now.Millisecond.ToString();
|
69 |
instance.Update(info);
|
70 |
}
|
71 |
[Test]
|
72 |
/// <summary>
|
73 |
/// 删除用户
|
74 |
/// </summary>
|
75 |
/// <param name="userId">用户编号</param>
|
76 |
/// <returns></returns>
|
77 |
public void DeleteByID()
|
78 |
{
|
79 |
int userId = instance.GetMaxUserId();
|
80 |
instance.Delete(userId);
|
81 |
}
|
82 |
}
|
83 |
} |