AccessHelper.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. using System;
  2. using System.Data;
  3. using System.Data.OleDb;
  4. /// <summary>
  5. ///Access数据库操作类
  6. ///创建时间:2010年4月16日17时9分
  7. ///作者:lyq
  8. /// </summary>
  9. ///
  10. public class AccessHelper
  11. {
  12. private OleDbConnection conn = null;
  13. private OleDbCommand cmd = null;
  14. private OleDbDataReader sdr = null;
  15. public AccessHelper()
  16. {
  17. string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|db.mdb";
  18. conn = new OleDbConnection(connStr);
  19. }
  20. /// <summary>创建Command对象
  21. /// 
  22. /// </summary>
  23. /// <param name="sql">SQL语句</param>
  24. public void CreateCommand(string sql)
  25. {
  26. conn.Open();
  27. cmd = new OleDbCommand(sql, conn);
  28. }
  29. /// <summary>添加参数
  30. /// 
  31. /// </summary>
  32. /// <param name="paramName">参数名称</param>
  33. /// <param name="value">值</param>
  34. public void AddParameter(string paramName, object value)
  35. {
  36. cmd.Parameters.Add(new OleDbParameter(paramName, value));
  37. }
  38. /// <summary>执行不带参数的增删改SQL语句
  39. ///  
  40. /// </summary>
  41. /// <param name="cmdText">增删改SQL语句</param>
  42. /// <param name="ct">命令类型</param>
  43. /// <returns></returns>
  44. public bool ExecuteNonQuery()
  45. {
  46. int res;
  47. try
  48. {
  49. res = cmd.ExecuteNonQuery();
  50. if (res > 0)
  51. {
  52. return true;
  53. }
  54. }
  55. catch (Exception ex)
  56. {
  57. throw ex;
  58. }
  59. finally
  60. {
  61. if (conn.State == ConnectionState.Open)
  62. {
  63. conn.Close();
  64. }
  65. }
  66. return false;
  67. }
  68. /// <summary>执行查询SQL语句
  69. ///  
  70. /// </summary>
  71. /// <param name="cmdText">查询SQL语句</param>
  72. /// <returns></returns>
  73. public DataTable ExecuteQuery()
  74. {
  75. DataTable dt = new DataTable();
  76. using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
  77. {
  78. dt.Load(sdr);
  79. }
  80. return dt;
  81. }
  82. /// <summary>分页
  83. ///
  84. /// </summary>
  85. /// <param name="tblName">表名</param>
  86. /// <param name="fldName">字段名</param>
  87. /// <param name="OrderfldName">排序字段名</param>
  88. /// <param name="OrderType">排序方式:asc或者desc</param>
  89. /// <param name="strWhere">条件,不用加where</param>
  90. /// <param name="PageSize">页大小</param>
  91. /// <param name="PageIndex">页索引</param>
  92. /// <returns></returns>
  93. public DataTable FengYe(string tblName, string fldName, string OrderfldName, string OrderType, string strWhere, int PageSize, int PageIndex)
  94. {
  95. DataTable dt = new DataTable();
  96. string strSQL = ""; // 主语句
  97. string strTmp = ""; // 临时变量
  98. string strOrder = ""; // 排序类型
  99. if (OrderType == "desc")
  100. {
  101. // 降序
  102. strTmp = "<(select min";
  103. strOrder = " order by " + OrderfldName + " desc";
  104. }
  105. else
  106. {
  107. // 升序
  108. strTmp = ">(select max";
  109. strOrder = " order by " + OrderfldName + " asc";
  110. }
  111. #region 第一页
  112. if (PageIndex == 1)
  113. {
  114. strTmp = string.IsNullOrEmpty(strWhere) ? "" : " where " + strWhere;
  115. strSQL = "select top " + PageSize + " " + fldName + " from " + tblName + strTmp + " " + strOrder;
  116. CreateCommand(strSQL);
  117. dt = ExecuteQuery();
  118. return dt;
  119. }
  120. #endregion
  121. #region 不是第一页
  122. if (string.IsNullOrEmpty(strWhere))
  123. {
  124. // 条件为空
  125. strSQL = string.Format("select top {0} {1} from {2} where {3}{4}({5}) from (select top {6} {7} from {8} {9}) as tblTmp) {10}", PageSize, fldName, tblName, OrderfldName, strTmp, OrderfldName, (PageIndex - 1) * PageSize, OrderfldName, tblName, strOrder, strOrder);
  126. CreateCommand(strSQL);
  127. dt = ExecuteQuery();
  128. }
  129. else
  130. {
  131. // 条件不为空
  132. strSQL = string.Format("select top {0} {1} from {2} where {3}{4}({5}) from (select top {6} {7} from {8} where {9} {10}) as tblTmp) and {11} {12}", PageSize, fldName, tblName, OrderfldName, strTmp, OrderfldName, (PageIndex - 1) * PageSize, OrderfldName, tblName, strWhere, strOrder, strWhere, strOrder);
  133. CreateCommand(strSQL);
  134. dt = ExecuteQuery();
  135. }
  136. #endregion
  137. return dt;
  138. }
  139. /// <summary>返回查询SQL语句查询出的结果的第一行第一列的值
  140. /// 
  141. /// </summary>
  142. /// <returns></returns>
  143. public string ExecuteScalar()
  144. {
  145. string res = "";
  146. try
  147. {
  148. object obj = cmd.ExecuteScalar();
  149. if (obj != null)
  150. {
  151. res = obj.ToString();
  152. }
  153. }
  154. catch (Exception ex)
  155. {
  156. throw ex;
  157. }
  158. finally
  159. {
  160. if (conn.State == ConnectionState.Open)
  161. {
  162. conn.Close();
  163. }
  164. }
  165. return res;
  166. }
  167. }