C# SQL辅助类及扩展方法

SQL辅助类

 1   /// <summary>
 2     /// SQL辅助类
 3     /// 2016-08-12
 4     /// </summary>
 5     public class SQLUtility
 6     {
 7 
 8         public SQLUtility()
 9         {
10             TablePre = Config.INSConfig.DBConfig.DBTablePre;
11         }
12 
13         /// <summary>
14         /// 数据库对象前缀
15         /// </summary>
16         public string TablePre { get; set; }
17 
18         /// <summary>
19         /// 表名称
20         /// </summary>
21         private string _tablename = "";
22         /// <summary>
23         /// 表名称
24         /// </summary>
25         public string TableName
26         {
27             get { return TablePre + _tablename; }
28             set { _tablename = value; }
29         }
30 
31         /// <summary>
32         /// Select临时数据
33         /// </summary>
34         public string Select { get; set; }
35 
36         /// <summary>
37         /// sql临时数据
38         /// </summary>
39         public StringBuilder Sql = new StringBuilder();
40 
41         /// <summary>
42         /// Where临时数据
43         /// </summary>
44         public List<string> Where = new List<string>();
45 
46         /// <summary>
47         /// Take临时数据
48         /// </summary>
49         public int Top { get; set; }
50 
51         /// <summary>
52         /// OrderBy临时数据
53         /// </summary>
54         public string OrderBy { get; set; }
55 
56         /// <summary>
57         /// GroupBy临时数据
58         /// </summary>
59         public string GroupBy { get; set; }
60 
61         /// <summary>
62         /// 事物状态
63         /// </summary>
64         public int TransactionState { get; set; }
65 
66         /// <summary>
67         /// 不需要操作的实体对象字段 针对 Insert 和 Update 方法
68         /// </summary>
69         public List<string> Operation = new List<string>();
70 
71         /// <summary>
72         /// 参数
73         /// </summary>
74         public List<DbParameter> Parameters = new List<DbParameter>();
75 
76     } 

扩展方法

  1  /// <summary>
  2     /// SQL辅助类扩展方法
  3     /// 2016-08-12
  4     /// </summary>
  5     public static class SQLUtilityExtensions
  6     {
  7 
  8         #region 基础扩展方法
  9 
 10         /// <summary>
 11         /// 设置操作表名
 12         /// [FROM {tableName}]
 13         /// </summary>
 14         /// <param name="tableName">表名</param>
 15         /// <returns></returns>
 16         public static SQLUtility From(this SQLUtility utility, string tableName)
 17         {
 18             utility.TableName = tableName;
 19             return utility;
 20         }
 21 
 22         /// <summary>
 23         /// 通过反射映射T操作表名
 24         /// [FROM {tableName}]
 25         /// </summary>
 26         /// <typeparam name="T">实体对象</typeparam>
 27         /// <returns></returns>
 28         public static SQLUtility From<T>(this SQLUtility utility)
 29         {
 30             utility.TableName = SQLHelperExtensions.GetTableName(typeof(T));
 31             return utility;
 32         }
 33 
 34         /// <summary>
 35         /// 设置查询字段
 36         /// [SELECT {strSelect}]
 37         /// </summary>
 38         /// <param name="strSelect">查询字段</param>
 39         /// <returns></returns>
 40         public static SQLUtility Select(this SQLUtility utility, string strSelect)
 41         {
 42             utility.Select = strSelect;
 43             return utility;
 44         }
 45 
 46         /// <summary>
 47         /// 设置查询数量
 48         /// [TOP {intTop}]
 49         /// </summary>
 50         /// <param name="intTop">查询数量</param>
 51         /// <returns></returns>
 52         public static SQLUtility Top(this SQLUtility utility, int intTop)
 53         {
 54             utility.Top = intTop;
 55             return utility;
 56         }
 57 
 58         /// <summary>
 59         /// 设置SQL条件语句
 60         /// [{strSql}]
 61         /// </summary>
 62         /// <param name="strSql">SQL条件语句</param>
 63         /// <returns></returns>
 64         public static SQLUtility Sql(this SQLUtility utility, string strSql)
 65         {
 66             utility.Sql.Append(strSql);
 67             return utility;
 68         }
 69 
 70         /// <summary>
 71         /// 设置连接查询
 72         /// 默认leftFiled为主表字段,rightFiled为连接表字段
 73         /// [{joinType} JOIN {joinTableName} ON  {SQLUtility.TableName}.{leftFiled} = {joinTableName}.{rightFiled}]
 74         /// </summary>
 75         /// <param name="joinTableName">连接表名</param>
 76         /// <param name="leftFiled">左连接字段</param>
 77         /// <param name="rightFiled">右连接字段</param>
 78         /// <param name="joinType">连接类型</param>
 79         /// <returns></returns>
 80         public static SQLUtility Join(this SQLUtility utility, string joinTableName, string leftFiled, string rightFiled, JoinType joinType)
 81         {
 82             utility.Sql.AppendFormat(" {4} JOIN [{0}] ON  [{1}].[{2}] = [{0}].[{3}] ", new object[] { joinTableName, utility.TableName, leftFiled, rightFiled, joinType });
 83             return utility;
 84         }
 85 
 86         /// <summary>
 87         /// 设置条件语句,无需添加WHERE或AND
 88         /// [AND {strWhere}]
 89         /// </summary>
 90         /// <param name="strWhere">条件语句</param>
 91         /// <returns></returns>
 92         public static SQLUtility Where(this SQLUtility utility, string strWhere)
 93         {
 94             if (!string.IsNullOrEmpty(strWhere))
 95             {
 96                 utility.Where.Add(string.Format(" AND {0} ", strWhere));
 97             }
 98             return utility;
 99         }
100 
101         /// <summary>
102         /// 设置多字段排序语句
103         /// [ORDER BY {orderByFiled}],[{orderByFiled}]
104         /// </summary>
105         /// <param name="orderByFiled">排序字段或SQL排序语句</param>
106         /// <returns></returns>
107         public static SQLUtility OrderBy(this SQLUtility utility, string orderByFiled)
108         {
109             if (orderByFiled.ToLower().IndexOf("order") > 0)
110             {
111                 utility.OrderBy = orderByFiled;
112             }
113             else
114             {
115                 utility.OrderBy = string.Format(" ORDER BY {0} ", orderByFiled);
116             }
117             return utility;
118         }
119 
120         /// <summary>
121         /// 设置单字段排序语句
122         /// [ORDER BY {orderByFiled} {orderByType}]
123         /// </summary>
124         /// <param name="orderByFiled">排序字段</param>
125         /// <param name="orderByType">排序类型</param>
126         /// <returns></returns>
127         public static SQLUtility OrderBy(this SQLUtility utility, string orderByFiled, OrderByType orderByType)
128         {
129             utility.OrderBy = string.Format(" ORDER BY {0} {1}", orderByFiled, orderByType.ToString());
130             return utility;
131         }
132 
133         /// <summary>
134         /// 设置数据分组
135         /// [Group By {groupByFileds}]
136         /// </summary>
137         /// <param name="groupByFileds">分组字段</param>
138         /// <returns></returns>
139         public static SQLUtility GroupBy(this SQLUtility utility, string[] groupByFileds)
140         {
141             utility.GroupBy = string.Format(" GROUP BY {0} ", string.Join(",", groupByFileds));
142             return utility;
143         }
144 
145         /// <summary>
146         /// 设置SQL IN条件语句
147         /// [AND {fieldName} IN ({inValues})]
148         /// </summary>
149         /// <param name="filedName">字段名</param>
150         /// <param name="inValues"></param>
151         /// <returns></returns>
152         public static SQLUtility In(this SQLUtility utility, string filedName, string[] inValues)
153         {
154             StringBuilder strIN = new StringBuilder();
155             if (inValues != null)
156             {
157                 foreach (string str in inValues)
158                 {
159                     if (!string.IsNullOrEmpty(str))
160                     {
161                         strIN.AppendFormat("'{0}',", str);
162                     }
163                 }
164             }
165             if (strIN.ToString().EndsWith(","))
166             {
167                 strIN.Remove(strIN.Length - 1, 1);
168             }
169             utility.Where.Add(string.Format(" AND {0} IN ({1})", filedName, strIN.ToString()));
170             return utility;
171         }
172 
173         /// <summary>
174         /// 不需要操作的实体对象字段 针对 Insert 和 Update 方法
175         /// 不影响Where,AddParameter参数
176         /// </summary>
177         /// <param name="operationFileds">不需要操作的实体对象字段</param>
178         /// <returns></returns>
179         public static SQLUtility NoOperation(this SQLUtility utility, string[] operationFileds)
180         {
181             utility.Operation.AddRange(operationFileds);
182             return utility;
183         }
184 
185         /// <summary>
186         /// 通过DbProviderFactory创建DbParameter参数
187         /// </summary>
188         /// <param name="parameterName">参数名称</param>
189         /// <param name="parameterValue">参数值</param>
190         /// <returns></returns>
191         public static SQLUtility AddParameter(this SQLUtility utility, string parameterName, object parameterValue)
192         {
193             utility.Parameters.Add(SQLHelper.CreateDbParameter(parameterName, parameterValue));
194             return utility;
195         }
196 
197         /// <summary>
198         /// 添加DbParameter参数集合
199         /// </summary>
200         /// <param name="parameters">参数集合</param>
201         /// <returns></returns>
202         public static SQLUtility AddParameter(this SQLUtility utility, DbParameter[] parameters)
203         {
204             utility.Parameters.AddRange(parameters);
205             return utility;
206         }
207 
208         /// <summary>
209         /// 清空SQLUtility对象
210         /// </summary>
211         /// <param name="utility"></param>
212         private static void Clear(this SQLUtility utility)
213         {
214             utility.Sql.Clear();
215             utility.Where.Clear();
216             utility.Parameters.Clear();
217         }
218 
219 
220         #endregion
221 
222         #region 事务处理
223 
224         /// <summary>
225         /// 开始事务
226         /// </summary>
227         public static void BeginTransaction(this SQLUtility utility)
228         {
229             SQLHelper.BeginTransaction();
230             utility.SetTransactionState();
231         }
232 
233         /// <summary>
234         /// 提交事务
235         /// </summary>
236         public static void CommitTransaction(this SQLUtility utility)
237         {
238             SQLHelper.Commit();
239             utility.SetTransactionState();
240         }
241 
242         /// <summary>
243         /// 回滚事务
244         /// </summary>
245         public static void RollBackTransaction(this SQLUtility utility)
246         {
247             SQLHelper.Rollback();
248             utility.SetTransactionState();
249         }
250 
251         /// <summary>
252         /// 获取事物状态
253         /// </summary>
254         /// <param name="utility"></param>
255         private static void SetTransactionState(this SQLUtility utility)
256         {
257             utility.TransactionState = SQLHelper.TransactionState;
258         }
259 
260         #endregion
261 
262         #region 执行SELECT方法
263 
264         /// <summary>
265         /// 是否存在记录
266         /// </summary>
267         /// <returns></returns>
268         public static bool Exists(this SQLUtility utility)
269         {
270             try
271             {
272                 string executeSql = GetStringSql(utility, "SELECT COUNT(1)");
273                 object objectValue = SQLHelper.ExecuteScalar(executeSql, utility.Parameters.ToArray());
274                 return SQLTypeHelper.ToBool(objectValue);
275             }
276             catch (Exception ex)
277             {
278                 throw new Exception("SQLUtility_Exists", ex);
279             }
280             finally
281             {
282                 utility.Clear();
283             }
284         }
285 
286         /// <summary>
287         /// 查询行数
288         /// 默认[Count(*)]通过Select方法改变查询参数
289         /// </summary>
290         /// <returns></returns>
291         public static int Count(this SQLUtility utility)
292         {
293             try
294             {
295                 string strSelect = string.IsNullOrEmpty(utility.Select) ? "SELECT COUNT(*)" : string.Format("SELECT COUNT({0})", utility.Select);
296                 string executeSql = GetStringSql(utility, strSelect);
297                 object objectValue = SQLHelper.ExecuteScalar(executeSql, utility.Parameters.ToArray());
298                 return SQLTypeHelper.ToInt(objectValue);
299             }
300             catch (Exception ex)
301             {
302                 throw new Exception("SQLUtility_Count", ex);
303             }
304             finally
305             {
306                 utility.Clear();
307             }
308         }
309 
310         /// <summary>
311         /// 查询第一行第一列
312         /// 默认[*]通过Select方法改变查询参数
313         /// </summary>
314         /// <returns></returns>
315         public static object Object(this SQLUtility utility)
316         {
317             try
318             {
319                 string strSelect = string.IsNullOrEmpty(utility.Select) ? "SELECT TOP 1 *" : string.Format("SELECT TOP 1 {0}", utility.Select);
320                 string executeSql = GetStringSql(utility, strSelect);
321                 return SQLHelper.ExecuteScalar(executeSql, utility.Parameters.ToArray());
322             }
323             catch (Exception ex)
324             {
325                 throw new Exception("SQLUtility_Object", ex);
326             }
327             finally
328             {
329                 utility.Clear();
330             }
331         }
332 
333         /// <summary>
334         /// 查询最大值
335         /// 需明确查询列 通过Select方法改变查询参数
336         /// </summary>
337         /// <returns>SQLUtility.Select参数为NULL或''时 返回-1</returns>
338         public static object Max(this SQLUtility utility)
339         {
340             try
341             {
342                 if (string.IsNullOrEmpty(utility.Select))
343                 {
344                     return -1;
345                 }
346                 string strSelect = string.Format("SELECT TOP 1 MAX({0})", utility.Select);
347                 string executeSql = GetStringSql(utility, strSelect);
348                 return SQLHelper.ExecuteScalar(executeSql, utility.Parameters.ToArray());
349             }
350             catch (Exception ex)
351             {
352                 throw new Exception("SQLUtility_Max", ex);
353             }
354             finally
355             {
356                 utility.Clear();
357             }
358         }
359 
360         /// <summary>
361         /// 查询最小值
362         /// 需明确查询列 通过Select方法改变查询参数
363         /// </summary>
364         /// <returns>SQLUtility.Select参数为NULL或''时 返回-1</returns>
365         public static object Min(this SQLUtility utility)
366         {
367             try
368             {
369                 if (string.IsNullOrEmpty(utility.Select))
370                 {
371                     return -1;
372                 }
373                 string strSelect = string.Format("SELECT TOP 1 MIN({0})", utility.Select);
374                 string executeSql = GetStringSql(utility, strSelect);
375                 return SQLHelper.ExecuteScalar(executeSql, utility.Parameters.ToArray());
376             }
377             catch (Exception ex)
378             {
379                 throw new Exception("SQLUtility_Min", ex);
380             }
381             finally
382             {
383                 utility.Clear();
384             }
385         }
386 
387         /// <summary>
388         /// 查询数据
389         /// 返回DataTable集合
390         /// </summary>
391         /// <returns></returns>
392         public static DataTable ToTable(this SQLUtility utility)
393         {
394             try
395             {
396                 string strSql = GetStringSql(utility);
397                 return SQLHelper.ExecuteDataTable(strSql, utility.Parameters.ToArray());
398             }
399             catch (Exception ex)
400             {
401                 throw new Exception("SQLUtility_ToDataTable", ex);
402             }
403             finally
404             {
405                 utility.Clear();
406             }
407         }
408 
409         /// <summary>
410         /// 查询数据
411         /// 返回集合中第一个元素。
412         /// </summary>
413         /// <returns></returns>
414         public static T First<T>(this  SQLUtility utility) where T : new()
415         {
416             var entitylist = utility.ToList<T>();
417             return entitylist != null && entitylist.Count > 0 ? entitylist.First() : default(T);
418         }
419 
420         /// <summary>
421         /// 查询数据
422         /// 返回集合中第一行元素。
423         /// </summary>
424         /// <returns></returns>
425         public static T ToModel<T>(this  SQLUtility utility) where T : new()
426         {
427             try
428             {
429                 string strSql = GetStringSql(utility);
430                 var dataRows = SQLHelper.ExecuteDataTable(strSql, utility.Parameters.ToArray()).Rows[0];
431                 return SQLHelperExtensions.RowToModel<T>(dataRows);
432             }
433             catch (Exception ex)
434             {
435                 throw new Exception("SQLUtility_ToList", ex);
436             }
437             finally
438             {
439                 utility.Clear();
440             }
441         }
442 
443         /// <summary>
444         /// 查询数据
445         /// 返回List对象集合
446         /// </summary>
447         /// <typeparam name="T"></typeparam>
448         /// <param name="SQLUtility"></param>
449         /// <returns></returns>
450         public static List<T> ToList<T>(this SQLUtility utility) where T : new()
451         {
452             try
453             {
454                 string strSql = GetStringSql(utility);
455                 var dataReader = SQLHelper.ExecuteReader(strSql, utility.Parameters.ToArray());
456                 return SQLHelperExtensions.ReaderToList<T>(dataReader);
457             }
458             catch (Exception ex)
459             {
460                 throw new Exception("SQLUtility_ToList", ex);
461             }
462             finally
463             {
464                 utility.Clear();
465             }
466         }
467 
468 
469         /// <summary>
470         /// 执行存储过程返回List集合对象
471         /// 通过AddParameters方法添加参数
472         /// </summary>
473         /// <typeparam name="T">实体对象</typeparam>
474         /// <param name="StoredProcedureName">存储过程名称</param>
475         /// <returns></returns>
476         //public static object StoredProcedureToObject<T>(this SQLUtility utility, string StoredProcedureName) where T : new()
477         //{
478         //    try
479         //    {
480         //        var dataReader = SQLHelper.(CommandType.StoredProcedure, StoredProcedureName, utility.Parameters.ToArray());
481         //        return SQLHelperExtensions.ReaderToList<T>(dataReader);
482         //    }
483         //    catch (Exception ex)
484         //    {
485         //        throw new ExceptionHelper("SQLUtility_StoredProcedure", ex);
486         //    }
487         //    finally
488         //    {
489         //        utility.Clear();
490         //    }
491         //}
492 
493 
494         /// <summary>
495         /// 执行存储过程返回List集合对象
496         /// 通过AddParameters方法添加参数
497         /// </summary>
498         /// <typeparam name="T">实体对象</typeparam>
499         /// <param name="StoredProcedureName">存储过程名称</param>
500         /// <returns></returns>
501         public static List<T> RunProcedureToList<T>(this SQLUtility utility, string procedureName) where T : new()
502         {
503             try
504             {
505                 var dataReader = SQLHelper.ExecuteReader(CommandType.StoredProcedure, procedureName, utility.Parameters.ToArray());
506                 return SQLHelperExtensions.ReaderToList<T>(dataReader);
507             }
508             catch (Exception ex)
509             {
510                 throw new ExceptionHelper("SQLUtility_StoredProcedure", ex);
511             }
512             finally
513             {
514                 utility.Clear();
515             }
516         }
517 
518         #endregion
519 
520         #region 执行INSERT方法
521 
522         /// <summary>
523         /// 通过实体对象添加数据
524         /// </summary>
525         /// <typeparam name="T">对象类型</typeparam>
526         /// <param name="entity">实体对象</param>
527         /// <returns></returns>
528         public static int Insert<T>(this SQLUtility utility, T entity) where T : class
529         {
530             try
531             {
532                 int result = 0;
533                 string fieldSql = string.Empty;
534                 string valueSql = string.Empty;
535                 StringBuilder executeSql = new StringBuilder();
536                 List<DbParameter> parameterList = SQLHelperExtensions.InsertSql<T>(entity, utility.Operation, out fieldSql, out valueSql);
537 
538                 if (parameterList != null && !string.IsNullOrEmpty(fieldSql) && !string.IsNullOrEmpty(valueSql))
539                 {
540                     executeSql.AppendFormat("INSERT INTO [{0}]({1}) ", utility.TableName, fieldSql);
541                     executeSql.AppendFormat("VALUES({0});", valueSql);
542                     result = SQLHelper.ExecuteNonQuery(executeSql.ToString(), parameterList.ToArray());
543                     if (utility.TransactionState != 0)
544                     {
545                         utility.SetTransactionState();
546                     }
547                 }
548                 return result;
549             }
550             catch (Exception ex)
551             {
552                 throw new Exception("SQLUtility_Insert", ex);
553             }
554             finally
555             {
556                 utility.Clear();
557             }
558         }
559 
560         /// <summary>
561         /// 通过实体对象集合添加数据
562         /// </summary>
563         /// <typeparam name="T">对象类型</typeparam>
564         /// <param name="list">对象集合</param>
565         /// <returns></returns>
566         public static int InsertRange<T>(this SQLUtility utility, List<T> list) where T : class
567         {
568             int result = 0;
569             foreach (var item in list)
570             {
571                 result += Insert(utility, item);
572             }
573             return result;
574         }
575 
576         /// <summary>
577         /// 通过SQL语句添加数据
578         /// </summary>
579         /// <param name="utility"></param>
580         /// <param name="insertCloumn">需要插入的字段</param>
581         /// <param name="valueCloumn">字段值</param>
582         /// <returns></returns>
583         public static int InsertToSql(this SQLUtility utility, string[] insertCloumn, string[] valueCloumn)
584         {
585             try
586             {
587                 int result = 0;
588                 StringBuilder executeSql = new StringBuilder();
589                 executeSql.AppendFormat("INSERT INTO [{0}]({1}) ", utility.TableName, string.Join(",", insertCloumn));
590                 executeSql.AppendFormat("VALUES({0}) ", string.Join(",", valueCloumn));
591                 executeSql.AppendFormat("WHERE 1=1 {0} ", string.Join(" ", utility.Where));
592                 result = SQLHelper.ExecuteNonQuery(executeSql.ToString(), utility.Parameters.ToArray());
593                 if (utility.TransactionState != 0)
594                 {
595                     utility.SetTransactionState();
596                 }
597                 return result;
598             }
599             catch (Exception ex)
600             {
601                 throw new ExceptionHelper("SQLUtility_UpdateToSql", ex);
602             }
603             finally
604             {
605                 utility.Clear();
606             }
607         }
608 
609 
610         #endregion
611 
612         #region 执行UPDATE方法
613 
614 
615         /// <summary>
616         /// 通过实体对象更新数据 
617         /// </summary>
618         /// <typeparam name="T">对象类型</typeparam>
619         /// <param name="entity">实体对象</param>
620         /// <returns></returns>
621         public static int Update<T>(this SQLUtility utility, T entity) where T : class
622         {
623             try
624             {
625                 int result = 0;
626                 string setSql = string.Empty;
627                 StringBuilder executeSql = new StringBuilder();
628                 List<DbParameter> parameterList = SQLHelperExtensions.UpdateSql<T>(entity, utility.Operation, out setSql);
629 
630                 if (parameterList != null && !string.IsNullOrEmpty(setSql))
631                 {
632                     executeSql.AppendFormat("UPDATE [{0}] SET {1} ", utility.TableName, string.Join(",", setSql));
633                     executeSql.AppendFormat("WHERE 1=1 {0} ", string.Join(" ", utility.Where));
634                     result = SQLHelper.ExecuteNonQuery(executeSql.ToString(), parameterList.ToArray());
635                     if (utility.TransactionState != 0)
636                     {
637                         utility.SetTransactionState();
638                     }
639                 }
640                 return result;
641             }
642             catch (Exception ex)
643             {
644                 throw new Exception("SQLUtility_Update", ex);
645             }
646             finally
647             {
648                 utility.Clear();
649             }
650         }
651 
652         /// <summary>
653         /// 通过SQL语句更新数据 
654         /// </summary>
655         /// <param name="updateCloumn">需要更新的列名</param>
656         /// <returns></returns>
657         public static int UpdateToSql(this SQLUtility utility, string[] updateCloumn)
658         {
659             try
660             {
661                 StringBuilder strSql = new StringBuilder();
662                 strSql.AppendFormat("UPDATE [{0}] SET {1} ", utility.TableName, string.Join(",", updateCloumn));
663                 strSql.AppendFormat("WHERE 1=1 {0} ", string.Join(" ", utility.Where));
664                 return SQLHelper.ExecuteNonQuery(strSql.ToString(), utility.Parameters.ToArray());
665             }
666             catch (Exception ex)
667             {
668                 throw new ExceptionHelper("SQLUtility_UpdateToSql", ex);
669             }
670             finally
671             {
672                 utility.Clear();
673             }
674         }
675 
676 
677         #endregion
678 
679         #region 执行DELETE方法
680 
681         /// <summary>
682         /// 删除数据
683         /// </summary>
684         /// <returns></returns>
685         public static int Delete(this SQLUtility utility)
686         {
687             try
688             {
689                 int result = 0;
690                 StringBuilder executeSql = new StringBuilder();
691                 if (string.IsNullOrEmpty(utility.TableName))
692                 {
693                     throw new Exception("SQLUtility对象中缺少From参数.");
694                 }
695                 executeSql.AppendFormat("DELETE [{0}] ", utility.TableName);
696                 executeSql.AppendFormat("WHERE 1=1 {0} ", string.Join(" ", utility.Where));
697                 result = SQLHelper.ExecuteNonQuery(executeSql.ToString(), utility.Parameters.ToArray());
698                 if (utility.TransactionState != 0)
699                 {
700                     utility.SetTransactionState();
701                 }
702                 return result;
703             }
704             catch (Exception ex)
705             {
706                 throw new Exception("SQLUtility_Delete", ex);
707             }
708             finally
709             {
710                 utility.Clear();
711             }
712         }
713 
714         #endregion
715 
716         /// <summary>
717         /// 获取SQL语句
718         /// </summary>
719         /// <returns></returns>
720         private static string GetStringSql(this SQLUtility utility, string selectSql = null)
721         {
722             StringBuilder strSql = new StringBuilder();
723             if (utility != null)
724             {
725                 if (string.IsNullOrEmpty(selectSql))
726                 {
727                     strSql.Append(utility.Top > 0 ? "SELECT TOP " + utility.Top.ToString() : "SELECT ");
728                     strSql.Append(string.IsNullOrEmpty(utility.Select) ? " * " : utility.Select);
729                 }
730                 else
731                 {
732                     strSql.Append(selectSql);
733                 }
734                 if (string.IsNullOrEmpty(utility.TableName))
735                 {
736                     throw new Exception("SQLUtility对象中缺少From参数.");
737                 }
738                 strSql.AppendFormat(" FROM [{0}] ", utility.TableName);
739                 strSql.AppendFormat(" {0} ", utility.Sql);
740                 strSql.AppendFormat(" WHERE 1=1 {0} ", string.Join(" ", utility.Where));
741                 strSql.Append(utility.OrderBy);
742                 strSql.Append(utility.GroupBy);
743             }
744             return strSql.ToString();
745         }
746     }
View Code

 

posted on 2016-08-31 16:48  一笑而过。  阅读(915)  评论(0编辑  收藏  举报

导航