You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
6.2 KiB

3 weeks ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.Common;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace NFine.Data.Extensions
  9. {
  10. public class SqlServerHelper
  11. {
  12. #region 数据分页
  13. /// <summary>
  14. /// 摘要:
  15. /// 数据分页
  16. /// 参数:
  17. /// sql:传入要执行sql语句
  18. /// param:参数化
  19. /// orderField:排序字段
  20. /// orderType:排序类型
  21. /// pageIndex:当前页
  22. /// pageSize:页大小
  23. /// count:返回查询条数
  24. /// </summary>
  25. public static DataTable GetPageTable(string sql, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  26. {
  27. StringBuilder strSql = new StringBuilder();
  28. if (pageIndex == 0)
  29. {
  30. pageIndex = 1;
  31. }
  32. int num = (pageIndex - 1) * pageSize;
  33. int num1 = (pageIndex) * pageSize;
  34. string OrderBy = "";
  35. if (!string.IsNullOrEmpty(orderField))
  36. OrderBy = "Order By " + orderField + " " + orderType + "";
  37. else
  38. OrderBy = "order by (select 0)";
  39. strSql.Append("Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  40. strSql.Append(" As rowNum, * From (" + sql + ") As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + "");
  41. count = Convert.ToInt32(DbHelper.ExecuteScalar(CommandType.Text, "Select Count(1) From (" + sql + ") As t", param));
  42. IDataReader dr = DbHelper.ExecuteReader(CommandType.Text, strSql.ToString(), param);
  43. return DatabaseReader.ReaderToDataTable(dr);
  44. }
  45. /// <summary>
  46. /// 摘要:
  47. /// 数据分页(支持传入排序条件)
  48. /// 参数:
  49. /// sql:传入要执行sql语句
  50. /// orderSql:传入的排序语句
  51. /// param:参数化
  52. /// orderField:排序字段
  53. /// orderType:排序类型
  54. /// pageIndex:当前页
  55. /// pageSize:页大小
  56. /// count:返回查询条数
  57. /// </summary>
  58. public static DataTable GetPageTable(string sql,string orderSql, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  59. {
  60. StringBuilder strSql = new StringBuilder();
  61. if (pageIndex == 0)
  62. {
  63. pageIndex = 1;
  64. }
  65. int num = (pageIndex - 1) * pageSize;
  66. int num1 = (pageIndex) * pageSize;
  67. string OrderBy = "";
  68. if (!string.IsNullOrEmpty(orderField))
  69. OrderBy = "Order By " + orderField + " " + orderType + "";
  70. else
  71. OrderBy = "order by (select 0)";
  72. strSql.Append("Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  73. strSql.Append(" As rowNum, * From (" + sql + ") As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + "");
  74. strSql.Append(orderSql);
  75. count = Convert.ToInt32(DbHelper.ExecuteScalar(CommandType.Text, "Select Count(1) From (" + sql + ") As t", param));
  76. IDataReader dr = DbHelper.ExecuteReader(CommandType.Text, strSql.ToString(), param);
  77. return DatabaseReader.ReaderToDataTable(dr);
  78. }
  79. /// <summary>
  80. /// 摘要:
  81. /// 数据分页
  82. /// 参数:
  83. /// sql:传入要执行sql语句
  84. /// orderField:排序字段
  85. /// orderType:排序类型
  86. /// pageIndex:当前页
  87. /// pageSize:页大小
  88. /// count:返回查询条数
  89. /// </summary>
  90. public static DataTable GetPageTable(string sql, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  91. {
  92. return GetPageTable(sql, null, orderField, orderType, pageIndex, pageSize, ref count);
  93. }
  94. /// <summary>
  95. /// 摘要:
  96. /// 数据分页
  97. /// 参数:
  98. /// sql:传入要执行sql语句
  99. /// param:参数化
  100. /// orderField:排序字段
  101. /// orderType:排序类型
  102. /// pageIndex:当前页
  103. /// pageSize:页大小
  104. /// count:返回查询条数
  105. /// </summary>
  106. public static List<T> GetPageList<T>(string sql, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  107. {
  108. StringBuilder strSql = new StringBuilder();
  109. if (pageIndex == 0)
  110. {
  111. pageIndex = 1;
  112. }
  113. int num = (pageIndex - 1) * pageSize;
  114. int num1 = (pageIndex) * pageSize;
  115. string OrderBy = "";
  116. if (!string.IsNullOrEmpty(orderField))
  117. OrderBy = "Order By " + orderField + " " + orderType + "";
  118. else
  119. OrderBy = "Order By (select 0)";
  120. strSql.Append("Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  121. strSql.Append(" As rowNum, * From (" + sql + ") As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + "");
  122. count = Convert.ToInt32(DbHelper.ExecuteScalar(CommandType.Text, "Select Count(1) From (" + sql + ") As t", param));
  123. IDataReader dr = DbHelper.ExecuteReader(CommandType.Text, strSql.ToString(), param);
  124. return DatabaseReader.ReaderToList<T>(dr);
  125. }
  126. /// <summary>
  127. /// 摘要:
  128. /// 数据分页
  129. /// 参数:
  130. /// sql:传入要执行sql语句
  131. /// orderField:排序字段
  132. /// orderType:排序类型
  133. /// pageIndex:当前页
  134. /// pageSize:页大小
  135. /// count:返回查询条数
  136. /// </summary>
  137. public static List<T> GetPageList<T>(string sql, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  138. {
  139. return GetPageList<T>(sql, null, orderField, orderType, pageIndex, pageSize, ref count);
  140. }
  141. #endregion
  142. }
  143. }