AccessHelper.cs 5.1 KB

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