zoukankan      html  css  js  c++  java
  • 自己封装的Access数据库的操作类(AccessHelper)

    加入了一个分页的方法,有空把其他的MYSQLHelper和SQLiteHelper也加上那个分页的方法,嘿嘿。

    using System;
    using System.Data;
    using System.Data.OleDb;
    /// <summary>
    ///Access数据库操作类
    ///创建时间:2010年4月16日17时9分
    ///作者:牛腩
    ///QQ: 164423073
    /// </summary>
    public class AccessHelper
    {
    private OleDbConnection conn = null;
    private OleDbCommand cmd = null;
    private OleDbDataReader sdr = null;
    public AccessHelper()
    {
    //  string connStr = WebConfigurationManager.ConnectionStrings["connStr"].ToString();
    string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|db.mdb";
    conn = new OleDbConnection(connStr);
    }
    /// <summary>创建Command对象
    ///  /// </summary>
    /// <param name="sql">SQL语句</param>
    public void CreateCommand(string sql)
    {
    conn.Open();
    cmd = new OleDbCommand(sql, conn);
    }
    /// <summary>添加参数
    ///  /// </summary>
    /// <param name="paramName">参数名称</param>
    /// <param name="value">值</param>
    public void AddParameter(string paramName, object value)
    {
    cmd.Parameters.Add(new OleDbParameter(paramName, value));
    }
    /// <summary>执行不带参数的增删改SQL语句
    ///   /// </summary>
    /// <param name="cmdText">增删改SQL语句</param>
    /// <param name="ct">命令类型</param>
    /// <returns></returns>
    public bool ExecuteNonQuery()
    {
    int res;
    try
    {
    res = cmd.ExecuteNonQuery();
    if (res > 0)
    {
    return true;
    }
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    if (conn.State == ConnectionState.Open)
    {
    conn.Close();
    }
    }
    return false;
    }
    /// <summary>执行查询SQL语句
    ///   /// </summary>
    /// <param name="cmdText">查询SQL语句</param>
    /// <returns></returns>
    public DataTable ExecuteQuery()
    {
    DataTable dt = new DataTable();
    using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
    {
    dt.Load(sdr);
    }
    return dt;
    }
    /// <summary>分页
    ///
    /// </summary>
    /// <param name="tblName">表名</param>
    /// <param name="fldName">字段名</param>
    /// <param name="OrderfldName">排序字段名</param>
    /// <param name="OrderType">排序方式:asc或者desc</param>
    /// <param name="strWhere">条件,不用加where</param>
    /// <param name="PageSize">页大小</param>
    /// <param name="PageIndex">页索引</param>
    /// <returns></returns>
    public DataTable FengYe(string tblName, string fldName, string OrderfldName, string OrderType, string strWhere, int PageSize, int PageIndex)
    {
    DataTable dt = new DataTable();
    string strSQL = ""; // 主语句
    string strTmp = ""; // 临时变量
    string strOrder = ""; // 排序类型
    if (OrderType == "desc")
    {
    // 降序
    strTmp = "<(select min";
    strOrder = " order by " + OrderfldName + " desc";
    }
    else
    {
    // 升序
    strTmp = ">(select max";
    strOrder = " order by " + OrderfldName + " asc";
    }
    #region 第一页
    if (PageIndex == 1)
    {
    strTmp = string.IsNullOrEmpty(strWhere) ? "" : " where " + strWhere;
    strSQL = "select top " + PageSize + " " + fldName + " from " + tblName + strTmp + " " + strOrder;
    CreateCommand(strSQL);
    dt = ExecuteQuery();
    return dt;
    }
    #endregion
    #region 不是第一页
    if (string.IsNullOrEmpty(strWhere))
    {
    // 条件为空
    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);
    CreateCommand(strSQL);
    dt = ExecuteQuery();
    }
    else
    {
    // 条件不为空
    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);
    CreateCommand(strSQL);
    dt = ExecuteQuery();
    }
    #endregion
    return dt;
    }
    /// <summary>返回查询SQL语句查询出的结果的第一行第一列的值
    ///  /// </summary>
    /// <returns></returns>
    public string ExecuteScalar()
    {
    string res = "";
    try
    {
    object obj = cmd.ExecuteScalar();
    if (obj != null)
    {
    res = obj.ToString();
    }
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    if (conn.State == ConnectionState.Open)
    {
    conn.Close();
    }
    }
    return res;
    }
    }
    自己做的测试项目下载:http://niunan.net/download/accesshelper.7z

    直接在网页上博客园发表文章慢死了,突然发现在发表文章的那个页面有个windows live writer的东西,下载来试了下,

    呵呵。。真不错啊。 这篇文章就是在这个玩意上发表的,蛮爽的。

    撸码:复制、粘贴,拿起键盘就是“干”!!!
  • 相关阅读:
    数据结构和算法大纲
    内存碎片产生原因及处理技术
    相关资源
    busybox hexdump 命令使用
    http协议中content-length 以及chunked编码分析
    libtool工具的使用
    音视频学习相关资源
    winpcap
    ipkg包管理
    system返回值校验
  • 原文地址:https://www.cnblogs.com/niunan/p/1715973.html
Copyright © 2011-2022 走看看