1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Data.SqlClient;
6 using System.Data;
7 using System.Configuration;
8
9 public class SqlHelper
10 {
11 public static readonly string conString = ConfigurationManager.ConnectionStrings["sqlCon"].ConnectionString;
12 //增删改
13 public static bool ExeNonQuery(string sql, CommandType type, params SqlParameter[] lists)
14 {
15 bool bFlag = false;
16 using (SqlConnection con = new SqlConnection(conString))
17 {
18 SqlCommand cmd = new SqlCommand();
19 cmd.Connection = con;
20 cmd.CommandText = sql;
21 cmd.CommandType = type;
22 if (lists != null)
23 {
24 foreach (SqlParameter p in lists)
25 {
26 cmd.Parameters.Add(p);
27 }
28 }
29 try
30 {
31 if (con.State == ConnectionState.Closed)
32 {
33 con.Open();
34 }
35 int result = cmd.ExecuteNonQuery();
36 if (result > 0)
37 {
38 bFlag = true;
39 }
40
41 }
42 catch { ;}
43 }
44 return bFlag;
45 }
46
47 //查.读
48 public static SqlDataReader ExeDataReader(string sql, CommandType type, params SqlParameter[] lists)
49 {
50 SqlConnection con = new SqlConnection(conString);
51 SqlCommand cmd = new SqlCommand();
52 cmd.Connection = con;
53 cmd.CommandText = sql;
54 cmd.CommandType = type;
55
56 if (con.State == ConnectionState.Closed)
57 {
58 con.Open();
59 }
60
61 if (lists != null)
62 {
63 foreach (SqlParameter p in lists)
64 {
65 cmd.Parameters.Add(p);
66 }
67 }
68
69 SqlDataReader reader = cmd.ExecuteReader();
70
71 return reader;
72 }
73
74 //返回单个值
75 public static object GetScalar(string sql, CommandType type, params SqlParameter[] lists)
76 {
77 object returnValue = null;
78 using (SqlConnection con = new SqlConnection(conString))
79 {
80 SqlCommand cmd = new SqlCommand();
81 cmd.Connection = con;
82 cmd.CommandText = sql;
83 cmd.CommandType = type;
84 if (lists != null)
85 {
86 foreach (SqlParameter p in lists)
87 {
88 cmd.Parameters.Add(p);
89 }
90 }
91 try
92 {
93 if (con.State == ConnectionState.Closed)
94 {
95 con.Open();
96 }
97 returnValue = cmd.ExecuteScalar();
98
99 }
100 catch { ; }
101 }
102 return returnValue;
103 }
104
105 //事务
106 public static bool ExeNonQueryTran(List<SqlCommand> list)
107 {
108 bool flag = true;
109 SqlTransaction tran = null;
110 using (SqlConnection con = new SqlConnection(conString))
111 {
112 try
113 {
114 if (con.State == ConnectionState.Closed)
115 {
116 con.Open();
117 tran = con.BeginTransaction();
118 foreach (SqlCommand com in list)
119 {
120 com.Connection = con;
121 com.Transaction = tran;
122 com.ExecuteNonQuery();
123 }
124 tran.Commit();
125 }
126 }
127 catch (Exception ex)
128 {
129 Console.Write(ex.Message);
130 tran.Rollback();
131 flag = false;
132 }
133 }
134 return flag;
135 }
136 //返回DataTable
137 public static DataTable GetTable(string sql)
138 {
139 SqlConnection conn = new SqlConnection(conString);
140 SqlDataAdapter da = new SqlDataAdapter(sql, conn);
141 DataTable table = new DataTable();
142 da.Fill(table);
143 return table;
144 }
145 /// <summary>
146 /// 调用带参数的存储过程,返回dataTable
147 /// </summary>
148 /// <param name="proc">存储过程的名称</param>
149 /// <param name="rows">一页几行</param>
150 /// <param name="page">当前页</param>
151 /// <param name="tabName">表名</param>
152 /// <returns>dataTable</returns>
153 public static DataTable Proc_Table(string proc, int rows, int page, string tabName)
154 {
155 SqlConnection conn = new SqlConnection(conString);
156 SqlCommand cmd = new SqlCommand(proc, conn);
157 //指定调用存储过程
158 cmd.CommandType = CommandType.StoredProcedure;
159 cmd.Parameters.Add("@rows", rows);
160 cmd.Parameters.Add("@page", page);
161 cmd.Parameters.Add("@tabName", tabName);
162 SqlDataAdapter apt = new SqlDataAdapter(cmd);
163 DataTable dt = new DataTable();
164 apt.Fill(dt);
165 return dt;
166 }
167
168 //调用带参数的存储过程返回datatable
169 public static DataTable GetTablebyproc(string proc, int pageRow, int pagSize, string tabName)
170 {
171 SqlConnection conn = new SqlConnection(conString);
172 SqlCommand cmd = new SqlCommand(proc,conn);
173 cmd.CommandType = CommandType.StoredProcedure;
174 cmd.Parameters.Add("@rows", pageRow);
175 cmd.Parameters.Add("@pagesize", pagSize);
176 cmd.Parameters.Add("@tablename", tabName);
177 SqlDataAdapter apt = new SqlDataAdapter(cmd);
178 DataTable table = new DataTable();
179 apt.Fill(table);
180 return table;
181
182 }
183 public static DataTable GetDataByPager(string tbname, string fieldkey, int pagecurrent, int pagesize, string fieldshow, string fieldorder, string wherestring, ref int pagecount)
184 {
185 SqlParameter[] parameters = {
186 new SqlParameter("@tbname", SqlDbType.VarChar, 100),
187 new SqlParameter("@FieldKey", SqlDbType.VarChar, 100),
188 new SqlParameter("@PageCurrent", SqlDbType.Int),
189 new SqlParameter("@PageSize", SqlDbType.Int),
190 new SqlParameter("@FieldShow", SqlDbType.VarChar, 200),
191 new SqlParameter("@FieldOrder", SqlDbType.VarChar, 200),
192 new SqlParameter("@WhereString", SqlDbType.VarChar, 500),
193 new SqlParameter("@RecordCount", SqlDbType.Int),
194 };
195 parameters[0].Value = tbname;
196 parameters[1].Value = fieldkey;
197 parameters[2].Value = pagecurrent;
198 parameters[3].Value = pagesize;
199 parameters[4].Value = fieldshow;
200 parameters[5].Value = fieldorder;
201 parameters[6].Value = wherestring;
202 parameters[7].Direction = ParameterDirection.Output;
203 DataTable dt = ExecuteQuery("sp_get_data", parameters).Tables[0];
204 pagecount = Convert.ToInt32(parameters[7].Value);
205 return dt;
206 }
207 /// <summary>
208 /// 执行有参数的查询类存储过程
209 /// </summary>
210 /// <param name="pstrStoreProcedure">存储过程名</param>
211 /// <param name="pParms">存储过程的参数数组</param>
212 /// <returns>查询得到的结果集</returns>
213 public static DataSet ExecuteQuery(string pstrStoreProcedure, SqlParameter[] pParms)
214 {
215
216
217 DataSet dsResult = new DataSet();
218 SqlDataAdapter sda = new SqlDataAdapter();
219 SqlConnection con = new SqlConnection(conString);
220 SqlCommand cmd;
221 int intCounter;
222 try
223 {
224 if (con.State != ConnectionState.Open)
225 con.Open();
226 cmd = new SqlCommand();
227 cmd.Connection = con;
228 cmd.CommandType = CommandType.StoredProcedure;
229 cmd.CommandText = pstrStoreProcedure;
230 if (pParms != null)
231 {
232 for (intCounter = 0; intCounter < pParms.GetLength(0); intCounter++)
233 {
234 cmd.Parameters.Add(pParms[intCounter]);
235 }
236 }
237 sda.SelectCommand = cmd;
238 sda.Fill(dsResult);
239
240
241 }
242 catch (SqlException ex)
243 {
244 throw new Exception(ex.Message);
245 }
246 finally
247 {
248 //清空关闭操作
249 sda.Dispose();
250 con.Close();
251 con.Dispose();
252
253 }
254 return dsResult;
255 }
256 /// <summary>
257 /// 此分页存储过程直没修改 大家可以用自己的
258 /// </summary>
259 /// <param name="tableName">表名</param>
260 /// <param name="getFields">需要返回的列</param>
261 /// <param name="orderName">排序的字段名</param>
262 /// <param name="pageSize">页尺寸</param>
263 /// <param name="pageIndex">页码</param>
264 /// <param name="isGetCount">返回记录总数,非 0 值则返回</param>
265 /// <param name="orderType">设置排序类型,0表示升序非0降序</param>
266 /// <param name="strWhere"></param>
267 /// <returns></returns>
268 //public static DataSet GetList(string tableName, string getFields, string orderName, int pageSize, int pageIndex, bool isGetCount, bool orderType, string strWhere)
269 //{
270 // SqlParameter[] parameters = {
271 // new SqlParameter("@tblName", SqlDbType.VarChar, 255),
272 // new SqlParameter("@strGetFields", SqlDbType.VarChar, 1000),
273 // new SqlParameter("@fldName", SqlDbType.VarChar, 255),
274 // new SqlParameter("@PageSize", SqlDbType.Int),
275 // new SqlParameter("@PageIndex", SqlDbType.Int),
276 // new SqlParameter("@doCount", SqlDbType.Bit),
277 // new SqlParameter("@OrderType", SqlDbType.Bit),
278 // new SqlParameter("@strWhere", SqlDbType.VarChar, 1500)
279 // };
280 // parameters[0].Value = tableName;
281 // parameters[1].Value = getFields;
282 // parameters[2].Value = orderName;
283 // parameters[3].Value = pageSize;
284 // parameters[4].Value = pageIndex;
285 // parameters[5].Value = isGetCount ? 1 : 0;
286 // parameters[6].Value = orderType ? 1 : 0;
287 // parameters[7].Value = strWhere;
288 // return SqlHelper.RunProcedure("pro_pageList", parameters, "ds");
289 //}
290 //public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
291 //{
292 // using (SqlConnection connection = new SqlConnection(conString))
293 // {
294 // DataSet dataSet = new DataSet();
295 // connection.Open();
296 // new SqlDataAdapter { SelectCommand = BuildQueryCommand(connection, storedProcName, parameters) }.Fill(dataSet, tableName);
297 // connection.Close();
298 // return dataSet;
299 // }
300 //}
301 /// <summary>
302 /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
303 /// </summary>
304 /// <param name="connection">数据库连接</param>
305 /// <param name="storedProcName">存储过程名</param>
306 /// <param name="parameters">存储过程参数</param>
307 /// <returns>SqlCommand</returns>
308 private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
309 {
310 SqlCommand command = new SqlCommand(storedProcName, connection)
311 {
312 CommandType = CommandType.StoredProcedure
313 };
314 foreach (SqlParameter parameter in parameters)
315 {
316 if (parameter != null)
317 {
318 if (((parameter.Direction == ParameterDirection.InputOutput) || (parameter.Direction == ParameterDirection.Input)) && (parameter.Value == null))
319 {
320 parameter.Value = DBNull.Value;
321 }
322 command.Parameters.Add(parameter);
323 }
324 }
325 return command;
326 }
327 //根据表名和主键id来进行删除
328 public static int DelData(string tabName, string ID)
329 {
330 if (ID != string.Empty && ID != "0")
331 {
332 string sql = string.Format("delete from {0} WHERE (ID IN ({1}))", tabName, ID);
333 int delNum = ExecuteSql(sql);
334 return delNum;
335 }
336 return 0;
337 }
338 //增删改返回执行条数
339 public static int ExecuteSql(string SQLString)
340 {
341 int num2;
342 using (SqlConnection connection = new SqlConnection(conString))
343 {
344 SqlCommand command = new SqlCommand(SQLString, connection);
345 try
346 {
347 connection.Open();
348 num2 = command.ExecuteNonQuery();
349 }
350 catch (SqlException exception)
351 {
352 connection.Close();
353 throw exception;
354 }
355 finally
356 {
357 if (command != null)
358 {
359 command.Dispose();
360 }
361 }
362 }
363 return num2;
364 }
365 }