基于公司级平台封装的SqlserverHelper

  1  public  class DBHelper
  2     {
  3         /// <summary>
  4         /// 数据库帮助
  5         /// </summary>
  6         protected static DbHelper db = null;
  7 
  8 
  9         /// <summary>
 10         /// 增删改
 11         /// </summary>
 12         /// <param name="sql">sql语句</param>
 13         /// <param name="param">参数</param>
 14         /// <returns></returns>
 15         public int ExecuteCommand(string sql, DbParameter[] param)
 16         {
 17             if (string.IsNullOrWhiteSpace(sql))
 18             {
 19                 throw new ArgumentNullException("参数异常");
 20             }
 21             try
 22             {
 23                 using (db = Config.CreateDbHelper())
 24                 {
 25                     //循环添加参数;
 26                     if (param != null)
 27                     {
 28                         foreach (var pa in param)
 29                         {
 30                             db.AddParameter(pa.ParameterName, pa.Value);
 31                         }
 32                     }
 33                     return db.ExecuteNonQuerySQL(sql);
 34                 }
 35             }
 36             catch (Exception e)
 37             {
 38                 throw e;
 39             }
 40         }
 41 
 42         /// <summary>
 43         /// 获取集合
 44         /// </summary>
 45         /// <param name="sql">sql语句</param>
 46         /// <param name="param">参数</param>
 47         /// <returns></returns>
 48         public IHashObjectList ExecuteScalar(string sql, DbParameter[] param)
 49         {
 50             if (string.IsNullOrWhiteSpace(sql))
 51             {
 52                 throw new ArgumentNullException("参数异常");
 53             }
 54             try
 55             {
 56                 using (db = Config.CreateDbHelper())
 57                 {
 58                     //循环添加参数;
 59                     if (param != null)
 60                     {
 61                         foreach (var pa in param)
 62                         {
 63                             db.AddParameter(pa.ParameterName, pa.Value);
 64                         }
 65                     }
 66                     return db.Select(sql);
 67                 }
 68             }
 69             catch (Exception e)
 70             {
 71                 throw e;
 72             }
 73         }
 74 
 75         /// <summary>
 76         /// 获取第一行数据
 77         /// </summary>
 78         /// <param name="sql">sql语句</param>
 79         /// <param name="param">参数</param>
 80         /// <returns></returns>
 81         public IHashObject SelectFirstRow(string sql, DbParameter[] param)
 82         {
 83             if (string.IsNullOrWhiteSpace(sql))
 84             {
 85                 throw new ArgumentNullException("参数异常");
 86             }
 87             try
 88             {
 89                 using (db = Config.CreateDbHelper())
 90                 {
 91                     //循环添加参数;
 92                     if (param != null)
 93                     {
 94                         foreach (var pa in param)
 95                         {
 96                             db.AddParameter(pa.ParameterName, pa.Value);
 97                         }
 98                     }
 99                     return db.SelectFirstRow(sql) ?? new HashObject();
100                 }
101             }
102             catch (Exception e)
103             {
104                 throw e;
105             }
106         }
107 
108         /// <summary>
109         /// 获取第一行数据
110         /// </summary>
111         /// <param name="sql">sql语句</param>
112         /// <param name="param">参数</param>
113         /// <returns></returns>
114         public IHashObject SelectSingleRow(string sql, DbParameter[] param)
115         {
116             if (string.IsNullOrWhiteSpace(sql))
117             {
118                 throw new ArgumentNullException("参数异常");
119             }
120             try
121             {
122                 using (db = Config.CreateDbHelper())
123                 {
124                     //循环添加参数;
125                     if (param != null)
126                     {
127                         foreach (var pa in param)
128                         {
129                             db.AddParameter(pa.ParameterName, pa.Value);
130                         }
131                     }
132                     return db.SelectSingleRow(sql) ?? new HashObject();
133                 }
134             }
135             catch (Exception e)
136             {
137                 throw e;
138             }
139         }
140 
141         /// <summary>
142         /// 分页获取
143         /// </summary>
144         /// <param name="pageIndex"></param>
145         /// <param name="pageCount"></param>
146         /// <param name="totalCount"></param>
147         /// <param name="tableName"></param>
148         /// <param name="order"></param>
149         /// <param name="whereData"></param>
150         /// <returns></returns>
151         public IHashObjectList GetByPage(int pageIndex, int pageCount, out int totalCount, string tableName, string order, bool isAsc, string[] fieldNames, IDictionary<string, object> whereData=null)
152         {
153             totalCount = 0;
154             if (string.IsNullOrWhiteSpace(tableName) || string.IsNullOrWhiteSpace(order)|| fieldNames.Length==0)
155             {
156                 throw new ArgumentNullException("参数异常");
157             }
158             try
159             {
160                 using (db = Config.CreateDbHelper())
161                 {
162                     string strWhere = BuildSelectWhereSql(whereData);
163                     this.BuildParameters(whereData);
164                     if (!string.IsNullOrWhiteSpace(strWhere))
165                     {
166                         totalCount = (int)db.ExecuteScalerSQL(string.Format("select count(0) from {0} where ", tableName) + strWhere);
167                     }
168                     else
169                     {
170                         totalCount = (int)db.ExecuteScalerSQL(string.Format("select count(0) from {0}", tableName));
171                     }
172                     StringBuilder strSql = new StringBuilder();
173                     strSql.Append("SELECT * FROM ( ");
174                     strSql.Append(" SELECT ROW_NUMBER() OVER (");
175                     if (isAsc)
176                     {
177                         strSql.Append("order by T." + order);
178                     }
179                     else
180                     {
181                         strSql.Append("order by T." + order+" desc");
182                     }
183                     StringBuilder strColumns = new StringBuilder();
184                     if (fieldNames.Length > 0)
185                     {
186                         foreach (var item in fieldNames)
187                         {
188                             if (strColumns.Length != 0)
189                             {
190                                 strColumns.Append(" , ");
191                             }
192                             strColumns.Append("T." + item);
193                         }
194                     }
195                     strSql.Append(")AS Row, " + strColumns + "  from " + tableName + " T ");
196                     if (!string.IsNullOrWhiteSpace(strWhere))
197                     {
198                         strSql.Append(" WHERE " + strWhere);
199                     }
200                     strSql.Append(" ) TT");
201                     strSql.AppendFormat(" WHERE TT.Row between (({0}*{1})+1) and ((({0}+1)*{1}))", pageIndex, pageCount);
202                     this.BuildParameters(whereData);
203                     return db.Select(strSql.ToString());
204                 }
205             }
206             catch (Exception e)
207             {
208                 throw e;
209             }
210         }
211 
212         /// <summary>
213         /// 事务提交数据;
214         /// </summary>
215         /// <param name="sql">sql语句</param>
216         /// <param name="param">参数</param>
217         /// <returns></returns>
218         public bool ExecuteSQLByTransaction(string sql, DbParameter[] param)
219         {
220             if (string.IsNullOrWhiteSpace(sql))
221             {
222                 throw new ArgumentNullException("参数异常");
223             }
224             try
225             {
226                 using (db = Config.CreateDbHelper())
227                 {
228                     int result = 0;
229                     if (!db.HasBegunTransaction)
230                     {
231                         //循环添加参数;
232                         if (param != null)
233                         {
234                             foreach (var pa in param)
235                             {
236                                 db.AddParameter(pa.ParameterName, pa.Value);
237                             }
238                         }
239                         try
240                         {
241                             db.BeginTransaction();
242                             result = db.ExecuteNonQuerySQL(sql);
243                             db.CommitTransaction();
244                         }
245                         catch (Exception ex)
246                         {
247                             db.RollbackTransaction();
248                             throw ex;
249                         }
250                     }
251                     return result > 0 ? true : false;
252                 }
253             }
254             catch (Exception e)
255             {
256                 throw e;
257             }
258         }
259 
260         /// <summary>
261         /// 执行sql语句得到返回结果
262         /// </summary>
263         /// <param name="sql">sql语句</param>
264         /// <returns></returns>
265         public object ExecuteScalerSQL(string sql)
266         {
267             if (string.IsNullOrWhiteSpace(sql))
268             {
269                 throw new ArgumentNullException("参数异常");
270             }
271             try
272             {
273                 using (db = Config.CreateDbHelper())
274                 {
275                     return db.ExecuteScalerSQL(sql);
276                 }
277             }
278             catch (Exception e)
279             {
280                 throw e;
281             }
282         }
283 
284         /// <summary>
285         /// 获取数据集数组
286         /// </summary>
287         /// <param name="sql">sql语句</param>
288         /// <returns></returns>
289         public DataTable[] ExecuteSQLEx(string sql, string[] tableNames)
290         {
291             if (string.IsNullOrWhiteSpace(sql))
292             {
293                 throw new ArgumentNullException("参数异常");
294             }
295             try
296             {
297                 using (db = Config.CreateDbHelper())
298                 {
299                     return db.ExecuteSQLEx(sql, tableNames);
300                 }
301             }
302             catch (Exception e)
303             {
304 
305                 throw e;
306             }
307         }
308 
309         /// <summary>
310         /// 获取数据集数组
311         /// </summary>
312         /// <param name="sql">sql语句</param>
313         /// <param name="tableNames">表明</param>
314         /// <returns></returns>
315         public DataTable[] ExecuteSQLEx(string sql)
316         {
317             if (string.IsNullOrWhiteSpace(sql))
318             {
319                 throw new ArgumentNullException("参数异常");
320             }
321             try
322             {
323                 using (db = Config.CreateDbHelper())
324                 {
325                     return db.ExecuteSQLEx(sql);
326                 }
327             }
328             catch (Exception e)
329             {
330                 throw e;
331             }
332         }
333 
334         /// <summary>
335         /// 新增
336         /// </summary>
337         /// <param name="tableName"></param>
338         /// <param name="fieldNames"></param>
339         /// <param name="data"></param>
340         /// <returns></returns>
341         public int Insert(string tableName, string[] fieldNames, IDictionary<string, object> data)
342         {
343             if (string.IsNullOrWhiteSpace(tableName) || data==null)
344             {
345                 throw new ArgumentNullException("参数异常");
346             }
347             try
348             {
349                 using (db = Config.CreateDbHelper())
350                 {
351                     if (fieldNames.Length == 0)
352                     {
353                         return db.Insert(tableName, data);
354                     }
355                     else
356                     {
357                         return db.Insert(tableName, fieldNames,data);
358                     }
359                 }
360             }
361             catch (Exception e)
362             {
363                 throw e;
364             }
365         }
366 
367         /// <summary>
368         /// 修改
369         /// </summary>
370         /// <param name="tableName"></param>
371         /// <param name="fieldNames"></param>
372         /// <param name="data"></param>
373         /// <returns></returns>
374         public int Update(string tableName, string[] fieldNames, IDictionary<string, object> data)
375         {
376             if (string.IsNullOrWhiteSpace(tableName) || data == null || fieldNames.Length==0)
377             {
378                 throw new ArgumentNullException("参数异常");
379             }
380             try
381             {
382                 using (db = Config.CreateDbHelper())
383                 {
384                       return db.Update(tableName, fieldNames, data);
385                 }
386             }
387             catch (Exception e)
388             {
389                 throw e;
390             }
391         }
392 
393         /// <summary>
394         /// 删除
395         /// </summary>
396         /// <param name="tableName"></param>
397         /// <param name="keyField"></param>
398         /// <param name="keyValue"></param>
399         /// <returns></returns>
400         public int Delete(string tableName, string keyField, object keyValue)
401         {
402             if (string.IsNullOrWhiteSpace(tableName) || string.IsNullOrWhiteSpace(keyField) || keyValue == null)
403             {
404                 throw new ArgumentNullException("参数异常");
405             }
406             try
407             {
408                 using (db = Config.CreateDbHelper())
409                 {
410                     return db.Delete(tableName, keyField, keyValue);
411                 }
412             }
413             catch (Exception e)
414             {
415                 throw e;
416             }
417         }
418 
419         /// <summary>
420         /// 获取集合
421         /// </summary>
422         /// <param name="tableName"></param>
423         /// <param name="fieldNames"></param>
424         /// <param name="data"></param>
425         /// <returns></returns>
426         public IHashObjectList GetList(string tableName, string[] fieldNames, IDictionary<string, object> data)
427         {
428             if (string.IsNullOrWhiteSpace(tableName) || fieldNames==null)
429             {
430                 throw new ArgumentNullException("参数异常");
431             }
432             try
433             {
434                 string sql = BuildSelectWhereSql(tableName, fieldNames, data);
435                 this.BuildParameters(data);
436                 return db.Select(sql);
437             }
438             catch (Exception e)
439             {
440                 throw e;
441             }
442         }
443 
444         #region 辅助方法
445 
446         /// <summary>
447         /// 构建参数
448         /// </summary>
449         /// <param name="data"></param>
450         private void BuildParameters(IDictionary<string, object> data)
451         {
452             if (data != null && data.Count > 0)
453             {
454                 foreach (var item in data)
455                 {
456                     this.AddParameter("@" + item.Key, "%" + item.Value + "%");
457                 }
458             }
459         }
460 
461         /// <summary>
462         /// 添加参数
463         /// </summary>
464         /// <param name="parameterName"></param>
465         /// <param name="value"></param>
466         /// <returns></returns>
467         public DbParameter AddParameter(string parameterName, object value)
468         {
469             return db.AddParameter(parameterName, value);
470         }
471 
472         /// <summary>
473         /// 构建查询条件语句
474         /// </summary>
475         /// <param name="tableName"></param>
476         /// <param name="fieldNames"></param>
477         /// <param name="data"></param>
478         /// <returns></returns>
479         public static string BuildSelectWhereSql(string tableName, string[] fieldNames, IDictionary<string, object> data)
480         {
481             StringBuilder builder = new StringBuilder();
482             foreach (string str in fieldNames)
483             {
484                 if (builder.Length != 0)
485                 {
486                     builder.Append(',');
487                 }
488                 builder.Append(str);
489             }
490             StringBuilder builderCon = new StringBuilder();
491             if (data != null && data.Count > 0)
492             {
493                 foreach (var item in data)
494                 {
495                     if (builderCon.Length != 0)
496                     {
497                         builderCon.Append(" and ");
498                     }
499                     builderCon.Append(item.Key + " like @" + item.Key);
500                 }
501                 return string.Format("select {0} from  {1} where 1=1 and {2}", builder, tableName, builderCon);
502             }
503             else
504             {
505                 return string.Format("select {0} from  {1}", builder, tableName);
506             }
507             
508         }
509 
510         /// <summary>
511         /// 构建查询条件语句
512         /// </summary>
513         /// <param name="tableName"></param>
514         /// <param name="data"></param>
515         /// <returns></returns>
516         public static string BuildSelectWhereSql(IDictionary<string, object> data)
517         {
518             StringBuilder builderCon = new StringBuilder();
519             if (data != null && data.Count > 0)
520             {
521                 foreach (var item in data)
522                 {
523                     if (builderCon.Length != 0)
524                     {
525                         builderCon.Append(" and ");
526                     }
527                     builderCon.Append(item.Key + " like @" + item.Key);
528                 }
529                 return string.Format(" 1=1 and {0}", builderCon);
530             }
531             return "";
532         }
533 
534         #endregion
535     }

需要引用 carpa.dll 和carpa.web.dll。在哪里加入附件 ?

posted @ 2015-05-13 10:50  lovemc  阅读(274)  评论(0编辑  收藏  举报