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 //调用带参数的存储过程返回datatable
146 public static DataTable GetTablebyproc(string proc, int pageRow, int pagSize, string tabName)
147 {
148 SqlConnection conn = new SqlConnection(conString);
149 SqlCommand cmd = new SqlCommand(proc,conn);
150 cmd.CommandType = CommandType.StoredProcedure;
151 cmd.Parameters.Add("@rows", pageRow);
152 cmd.Parameters.Add("@pagesize", pagSize);
153 cmd.Parameters.Add("@tablename", tabName);
154 SqlDataAdapter apt = new SqlDataAdapter(cmd);
155 DataTable table = new DataTable();
156 apt.Fill(table);
157 return table;
158
159 }
160 public static DataTable GetDataByPager(string tbname, string fieldkey, int pagecurrent, int pagesize, string fieldshow, string fieldorder, string wherestring, ref int pagecount)
161 {
162 SqlParameter[] parameters = {
163 new SqlParameter("@tbname", SqlDbType.VarChar, 100),
164 new SqlParameter("@FieldKey", SqlDbType.VarChar, 100),
165 new SqlParameter("@PageCurrent", SqlDbType.Int),
166 new SqlParameter("@PageSize", SqlDbType.Int),
167 new SqlParameter("@FieldShow", SqlDbType.VarChar, 200),
168 new SqlParameter("@FieldOrder", SqlDbType.VarChar, 200),
169 new SqlParameter("@WhereString", SqlDbType.VarChar, 500),
170 new SqlParameter("@RecordCount", SqlDbType.Int),
171 };
172 parameters[0].Value = tbname;
173 parameters[1].Value = fieldkey;
174 parameters[2].Value = pagecurrent;
175 parameters[3].Value = pagesize;
176 parameters[4].Value = fieldshow;
177 parameters[5].Value = fieldorder;
178 parameters[6].Value = wherestring;
179 parameters[7].Direction = ParameterDirection.Output;
180 DataTable dt = ExecuteQuery("sp_get_data", parameters).Tables[0];
181 pagecount = Convert.ToInt32(parameters[7].Value);
182 return dt;
183 }
184 /// <summary>
185 /// 执行有参数的查询类存储过程
186 /// </summary>
187 /// <param name="pstrStoreProcedure">存储过程名</param>
188 /// <param name="pParms">存储过程的参数数组</param>
189 /// <returns>查询得到的结果集</returns>
190 public static DataSet ExecuteQuery(string pstrStoreProcedure, SqlParameter[] pParms)
191 {
192
193
194 DataSet dsResult = new DataSet();
195 SqlDataAdapter sda = new SqlDataAdapter();
196 SqlConnection con = new SqlConnection(conString);
197 SqlCommand cmd;
198 int intCounter;
199 try
200 {
201 if (con.State != ConnectionState.Open)
202 con.Open();
203 cmd = new SqlCommand();
204 cmd.Connection = con;
205 cmd.CommandType = CommandType.StoredProcedure;
206 cmd.CommandText = pstrStoreProcedure;
207 if (pParms != null)
208 {
209 for (intCounter = 0; intCounter < pParms.GetLength(0); intCounter++)
210 {
211 cmd.Parameters.Add(pParms[intCounter]);
212 }
213 }
214 sda.SelectCommand = cmd;
215 sda.Fill(dsResult);
216
217
218 }
219 catch (SqlException ex)
220 {
221 throw new Exception(ex.Message);
222 }
223 finally
224 {
225 //清空关闭操作
226 sda.Dispose();
227 con.Close();
228 con.Dispose();
229
230 }
231 return dsResult;
232 }
233 /// <summary>
234 /// 此分页存储过程直没修改 大家可以用自己的
235 /// </summary>
236 /// <param name="tableName">表名</param>
237 /// <param name="getFields">需要返回的列</param>
238 /// <param name="orderName">排序的字段名</param>
239 /// <param name="pageSize">页尺寸</param>
240 /// <param name="pageIndex">页码</param>
241 /// <param name="isGetCount">返回记录总数,非 0 值则返回</param>
242 /// <param name="orderType">设置排序类型,0表示升序非0降序</param>
243 /// <param name="strWhere"></param>
244 /// <returns></returns>
245 //public static DataSet GetList(string tableName, string getFields, string orderName, int pageSize, int pageIndex, bool isGetCount, bool orderType, string strWhere)
246 //{
247 // SqlParameter[] parameters = {
248 // new SqlParameter("@tblName", SqlDbType.VarChar, 255),
249 // new SqlParameter("@strGetFields", SqlDbType.VarChar, 1000),
250 // new SqlParameter("@fldName", SqlDbType.VarChar, 255),
251 // new SqlParameter("@PageSize", SqlDbType.Int),
252 // new SqlParameter("@PageIndex", SqlDbType.Int),
253 // new SqlParameter("@doCount", SqlDbType.Bit),
254 // new SqlParameter("@OrderType", SqlDbType.Bit),
255 // new SqlParameter("@strWhere", SqlDbType.VarChar, 1500)
256 // };
257 // parameters[0].Value = tableName;
258 // parameters[1].Value = getFields;
259 // parameters[2].Value = orderName;
260 // parameters[3].Value = pageSize;
261 // parameters[4].Value = pageIndex;
262 // parameters[5].Value = isGetCount ? 1 : 0;
263 // parameters[6].Value = orderType ? 1 : 0;
264 // parameters[7].Value = strWhere;
265 // return SqlHelper.RunProcedure("pro_pageList", parameters, "ds");
266 //}
267 //public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
268 //{
269 // using (SqlConnection connection = new SqlConnection(conString))
270 // {
271 // DataSet dataSet = new DataSet();
272 // connection.Open();
273 // new SqlDataAdapter { SelectCommand = BuildQueryCommand(connection, storedProcName, parameters) }.Fill(dataSet, tableName);
274 // connection.Close();
275 // return dataSet;
276 // }
277 //}
278 /// <summary>
279 /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
280 /// </summary>
281 /// <param name="connection">数据库连接</param>
282 /// <param name="storedProcName">存储过程名</param>
283 /// <param name="parameters">存储过程参数</param>
284 /// <returns>SqlCommand</returns>
285 private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
286 {
287 SqlCommand command = new SqlCommand(storedProcName, connection)
288 {
289 CommandType = CommandType.StoredProcedure
290 };
291 foreach (SqlParameter parameter in parameters)
292 {
293 if (parameter != null)
294 {
295 if (((parameter.Direction == ParameterDirection.InputOutput) || (parameter.Direction == ParameterDirection.Input)) && (parameter.Value == null))
296 {
297 parameter.Value = DBNull.Value;
298 }
299 command.Parameters.Add(parameter);
300 }
301 }
302 return command;
303 }
304 //根据表名和主键id来进行删除
305 public static int DelData(string tabName, string ID)
306 {
307 if (ID != string.Empty && ID != "0")
308 {
309 string sql = string.Format("delete from {0} WHERE (ID IN ({1}))", tabName, ID);
310 int delNum = ExecuteSql(sql);
311 return delNum;
312 }
313 return 0;
314 }
315 //增删改返回执行条数
316 public static int ExecuteSql(string SQLString)
317 {
318 int num2;
319 using (SqlConnection connection = new SqlConnection(conString))
320 {
321 SqlCommand command = new SqlCommand(SQLString, connection);
322 try
323 {
324 connection.Open();
325 num2 = command.ExecuteNonQuery();
326 }
327 catch (SqlException exception)
328 {
329 connection.Close();
330 throw exception;
331 }
332 finally
333 {
334 if (command != null)
335 {
336 command.Dispose();
337 }
338 }
339 }
340 return num2;
341 }
342 }