1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Data;
6 using System.Data.SqlClient;
7 namespace build
8 {
9 public class Database
10 {
11 public SqlConnection getConnection()
12 {
13 return new SqlConnection("server=.;uid=home;pwd=;database=build");
14 }
15 SqlConnection con = null;
16 /// <summary>
17 /// 执行SQL语句
18 /// </summary>
19 /// <param name="sql">SQL语句</param>
20 /// <returns>返回一个具体值</returns>
21 public object QueryScalar(string sql)
22 {
23 Open();//打开数据连接
24 object result = null;
25 try
26 {
27 using(SqlCommand cmd=new SqlCommand(sql,con))
28 {
29 result = cmd.ExecuteScalar();
30 return result;
31 }
32 }
33 catch
34 {
35 return null;
36 }
37
38 }
39 /// <summary>
40 /// 执行SQL语句
41 /// </summary>
42 /// <param name="sql">要执行的SQL语句</param>
43 /// <param name="prams">参数</param>
44 /// <returns></returns>
45 public object QueryScalar(string sql,SqlParameter[]prams)
46 {
47 Open();
48 object result = null;
49 try
50 {
51 using (SqlCommand cmd = CreateCommandSql(sql, prams))
52 {
53 result = cmd.ExecuteScalar();
54 return result;
55 }
56 }
57 catch
58 {
59 return null;
60 }
61 }
62 /// <summary>
63 /// 创建一个Sqlcommand对象,用来构建SQL语句
64 /// </summary>
65 /// <param name="sql">sql语句</param>
66 /// <param name="prams">sql所需要的参数</param>
67 /// <returns></returns>
68 public SqlCommand CreateCommandSql(string sql, SqlParameter[] prams)
69 {
70 Open();
71 SqlCommand cmd = new SqlCommand(sql,con);
72 if (prams != null)
73 {
74 foreach (SqlParameter parameter in prams)
75 {
76 cmd.Parameters.Add(parameter);
77 }
78 }
79 return cmd;
80 }
81 private void Open()
82 {
83 if (con == null)
84 {
85 con = new SqlConnection("server=.;uid=home;pwd=;database=build");
86
87 }
88 if (con.State == ConnectionState.Closed)
89 {
90 con.Open();
91 }
92 }
93 /// <summary>
94 /// 要执行SQL语句,该方法返回一个DataTable
95 /// </summary>
96 /// <param name="sql">执行SQL语句</param>
97 /// <returns></returns>
98 public DataTable Query(string sql)
99 {
100 Open();
101 using (SqlDataAdapter sqlda = new SqlDataAdapter(sql, con))
102 {
103 using (DataTable dt = new DataTable())
104 {
105 sqlda.Fill(dt);
106 return dt;
107 }
108 }
109
110 }
111 /// <summary>
112 /// 执行SQL语句,返回DataTable
113 /// </summary>
114 /// <param name="sql">要执行的SQL语句</param>
115 /// <param name="prams">构建SQL语句所需要的参数</param>
116 /// <returns></returns>
117 public DataTable Query(string sql,SqlParameter[]prams)
118 {
119 SqlCommand cmd = CreateCommandSql(sql,prams);
120 using (SqlDataAdapter sqldata = new SqlDataAdapter(cmd))
121 {
122 using (DataTable dt = new DataTable())
123 {
124 sqldata.Fill(dt);
125 return dt;
126 }
127 }
128 }
129 /// <summary>
130 /// 执行SQL语句,返回影响的记录行数
131 /// </summary>
132 /// <param name="sql">要执行的SQL语句</param>
133 /// <returns></returns>
134 public int RunSql(string sql)
135 {
136 int result = -1;
137 try
138 {
139 Open();
140 using (SqlCommand cmd = new SqlCommand(sql, con))
141 {
142 result= cmd.ExecuteNonQuery();
143 con.Close();
144 return result;
145 }
146 }
147 catch
148 {
149 return 0;
150 }
151 }
152 /// <summary>
153 /// 执行SQL语句,返回影响的记录行数
154 /// </summary>
155 /// <param name="sql">要执行的SQL语句</param>
156 /// <param name="prams">SQL语句所需要的参数</param>
157 /// <returns></returns>
158 public int RunSql(string sql,SqlParameter[]prams)
159 {
160 try
161 {
162 int result = -1;
163 SqlCommand cmd = CreateCommandSql(sql, prams);
164 result = cmd.ExecuteNonQuery();
165 this.Close();
166 return result;
167 }
168 catch
169 {
170 return 0;
171 }
172
173 }
174 public void Close()
175 {
176 if (con != null)
177 con.Close();
178
179 }
180 /// <summary>
181 /// 执行SQL语句,返回一个SqlDataReader
182 /// </summary>
183 /// <param name="sql"></param>
184 /// <param name="dataReader"></param>
185 public void RunSql(string sql,out SqlDataReader dataReader)
186 {
187 SqlCommand cmd = CreateCommandSql(sql,null);
188 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
189
190 }
191 public void RunSql(string sql,SqlParameter[]prams,out SqlDataReader dataReader)
192 {
193 SqlCommand cmd = CreateCommandSql(sql,prams);
194 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
195 }
196 /// <summary>
197 /// 执行存储过程
198 /// </summary>
199 /// <param name="ProcName">存储过程名称</param>
200 /// <returns></returns>
201 public int RunProc(string ProcName)
202 {
203 SqlCommand cmd = CreateCommand(ProcName,null);
204 cmd.ExecuteNonQuery();
205 this.Close();
206 return (int)cmd.Parameters["ReturnValue"].Value;
207
208 }
209 /// <summary>
210 /// 执行存储过程
211 /// </summary>
212 /// <param name="ProcName">要执行的存储过程的名称</param>
213 /// <param name="prams">构建存储过程所需要的参数</param>
214 /// <returns></returns>
215 public int RunProc(string ProcName,SqlParameter[]prams)
216 {
217 SqlCommand cmd = CreateCommand(ProcName,prams);
218 cmd.ExecuteNonQuery();
219 this.Close();
220 return (int)cmd.Parameters["ReturnValue"].Value;
221 }
222 /// <summary>
223 /// 执行存储过程,返回SqlDataReader
224 /// </summary>
225 /// <param name="ProcName">存储过程</param>
226 /// <param name="dataReader">要返回的SqlDataReader</param>
227 public void RunProc(string ProcName,out SqlDataReader dataReader)
228 {
229 SqlCommand cmd = CreateCommand(ProcName,null);
230 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
231 }
232 public void RunProc(string ProcName,SqlParameter[]prams,out SqlDataReader dataReader)
233 {
234 SqlCommand cmd = CreateCommand(ProcName,prams);
235 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
236 }
237 /// <summary>
238 /// 创建一个sqlCommand对象,用来执行存储过程
239 /// </summary>
240 /// <param name="ProcName">存储过程名称</param>
241 /// <param name="prams">构建存储过程所需要的参数</param>
242 /// <returns></returns>
243 private SqlCommand CreateCommand(string ProcName,SqlParameter[]prams)
244 {
245 Open();
246 SqlCommand cmd = new SqlCommand(ProcName,con);
247 cmd.CommandType = CommandType.StoredProcedure;
248 if (prams != null)
249 {
250 foreach (SqlParameter parameter in prams)
251 {
252 cmd.Parameters.Add(parameter);
253 }
254
255 }
256 cmd.Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));
257 return cmd;
258
259 }
260 /// <summary>
261 /// 对DateTime型数据做限制
262 /// </summary>
263 /// <returns></returns>
264 public SqlParameter MakeInParamDate(string ParamName,SqlDbType DbType,int size,DateTime value)
265 {
266 if (value.ToShortDateString() == "0001-1-1")
267 {
268 return MakeParam(ParamName, DbType, size, ParameterDirection.Input, System.DBNull.Value);
269 }
270 else
271 {
272 return MakeParam(ParamName,DbType,size,ParameterDirection.Input,value);
273 }
274 }
275 public SqlParameter MakeParam(string ParamName,SqlDbType DbType,int size,ParameterDirection Direction,object value)
276 {
277 SqlParameter Param;
278 if (size > 0)
279 {
280 Param = new SqlParameter(ParamName, DbType, size);
281 }
282 else
283 {
284 Param = new SqlParameter(ParamName,DbType);
285 }
286 Param.Direction = Direction;
287 if (!(Direction == ParameterDirection.Output && value == null))
288 {
289 Param.Value = value;
290
291
292 }
293 return Param;
294 }
295 /// <summary>
296 /// 对String类型数据的限制
297 /// </summary>
298 /// <returns></returns>
299 public SqlParameter MakeInParamStr(string ParamName,SqlDbType Dbtype,int size,string value)
300 {
301 if (value == null)
302 {
303 return MakeParam(ParamName, Dbtype, size, ParameterDirection.Input, System.DBNull.Value);
304
305 }
306 else
307 {
308 return MakeParam(ParamName,Dbtype,size,ParameterDirection.Input,value);
309 }
310 }
311 /// <summary>
312 /// 对int,float数据的限制
313 /// </summary>
314 /// <returns></returns>
315 public SqlParameter MakeInParamIntF(string ParamName,SqlDbType DbType,int size,object value)
316 {
317 if (float.Parse(value.ToString()) == 0)
318 {
319 return MakeParam(ParamName, DbType, size, ParameterDirection.Input, System.DBNull.Value);
320 }
321 else
322 {
323 return MakeParam(ParamName,DbType,size,ParameterDirection.Input,value);
324 }
325 }
326 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, object value)
327 {
328 return MakeParam(ParamName, DbType, 0, ParameterDirection.Input, value);
329 }
330 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int size, object value)
331 {
332 return MakeParam(ParamName, DbType, size, ParameterDirection.Input, value);
333 }
334 public SqlParameter MakeOutParam(string ParamName,SqlDbType DbType,int size)
335 {
336 return MakeParam(ParamName, DbType, size, ParameterDirection.Output, null);
337 }
338 public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int size)
339 {
340 return MakeParam(ParamName,DbType,size,ParameterDirection.ReturnValue,null);
341 }
342
343 }
344 }