`
niunan
  • 浏览: 696851 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

自己封装的Access数据库的操作类(AccessHelper)

    博客分类:
  • .NET
阅读更多

加入了一个分页的方法,有空把其他的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
分享到:
评论

相关推荐

    多数据库操作帮助类

    针对不同数据库,进行的操作方法封装。 满足基本操作条件,增加、删除、修改、查询、事务、存储过程。 目前支持的数据库有:MySql,SqlServer,Oracle,SQLite,Access 调用方法 需要先配置访问数据库连接,并在初始化...

    C# 公共类文档包含Sql、Excel、Xml、GDI、窗体冻结解冻、图片水印压缩编码、正则表达式、反射操作等,各辅助类封装完美

    大神封装的DotNet参考类库,值得学习借鉴----------Database--------------1.DataTable帮助类(DataTableHelper.cs)2.Access数据库文件操作辅助类(JetAccessUtil.cs)3.常用的Access数据库Sql操作辅助类库...

    2011-5-9 更新.net常用开发资源包

    使用方便、如下类:AccessHelper、FTP、HttpClient、JScript、Json。新增功能:Excel导入导出功能、Access数据库增删、修复、压缩功能、动态转静态页面的通用方法的封装、IP地址互转换Int类型功能等。新增文件上传...

    .net数据访问类 SQL Helper 类

    .net数据访问类 SQL Helper 介绍 摘要:Data Access Application Block 是一个 .NET 组件,包含优化的数据访问代码,可以帮助用户调用存储过程以及向 SQL Server 数据库发出 SQL 文本命令。它返回 SqlDataReader、...

    最新更新.net常用开发资源包

    使用方便、如下类:AccessHelper、FTP、HttpClient、JScript、Json。新增功能:Excel导入导出功能、Access数据库增删、修复、压缩功能、动态转静态页面的通用方法的封装、IP地址互转换Int类型功能等

    C#基类库(苏飞版)

    1.数据访问基础类(基于OleDb)Access数据库, 2.得到最大值;是否存在;是否存在(基于OleDbParameter); 3.执行SQL语句,返回影响的记录数;执行多条SQL语句,实现数据库事务; 4.执行带一个存储过程参数的的SQL...

    NET公共类库[转发]

    Access操作辅助类 JetAccess.cs Access的新建,压缩,加密等数据库文件操作 Oledb操作辅助类 OleDbHelper.cs 使用OleDb数据源执行SQL语句 ?Common Class Name File Function 执行命令类 CmdUtil.cs 执行各类命令;如:...

    SQLHelper.cs

    Data Access Application Block 将访问 Microsoft SQL Server™ 数据库的性能和资源管理方面的最佳经验封装在一起。您可以很方便地在自己的 .NET 应用程序中将其作为构造块使用,从页减少了需要创建、测试和维护的...

    ASP.NET3.5从入门到精通

    9.6 ASP.NET 数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView 显示、删除、修改数据 9.6.3 使用DataList 显示数据 9.6.4 DataList 分页实现 9.6.5 使用SQLHelper 操作数据库 9.7 小结 第 10 章访问其他...

    ASP.NET 3.5 开发大全11-15

    9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源...

    ASP.NET 3.5 开发大全

    9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源...

    ASP.NET 3.5 开发大全1-5

    9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源...

    ASP.NET 3.5 开发大全word课件

    9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源...

    ASPNET35开发大全第一章

    9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源...

    asp.net知识库

    为ASP.NET封装的SQL数据库访问类 DataTable.Select方法的性能问题 .NET 2.0里使用强类型数据创建多层应用 ADO.NET实用经验无保留曝光 有了System.Data.IDataReader,一切皆成数据 理解DataSet的数据缓存机制 存储过程...

    ZendFramework中文文档

    3.2. 数据库表认证 3.2.1. 简介 3.2.2. 高级使用:持久一个 DbTable 结果对象 3.2.3. 高级用法示例 3.3. 摘要式认证 3.3.1. 简介 3.3.2. 规范(Specifics) 3.3.3. 身份(Identity) 3.4. HTTP 认证适配器 ...

Global site tag (gtag.js) - Google Analytics