原文发布时间为:2009-10-28 —— 来源于本人的百度文章 [由搬家工具导入]

using System;
using System.Data;
using System.Data.OleDb;

public class AccessHelper
{
    private string configName = string.Empty;

    public AccessHelper()
    {
        this.configName = "conn";//默认值
    }

    /// <summary>
    /// 实例化。http://hi.baidu.com/handboy
    /// </summary>
    /// <param name="ConfigName">配置文件Add的name属性值。</param>
    public AccessHelper(string ConfigName)
    {
        this.configName = ConfigName;
    }

    /// <summary>
    /// 数据库连接。
    /// </summary>
    private string ConnectionValue
    {
        get
        {
            return System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString;
        }
    }
    /// <summary>
    /// 用于执行一段SQL语句。
    /// default Command type is text
    /// </summary>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>返回影响行数 (effect line number)</returns>
    public int ExecuteNonQuery(string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(ConnectionValue))
        {
            PrepareCommand(cmd, conn, cmdText, cmdParms);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }

    /// <summary>
    /// 用于执行一段SQL语句。
    /// To excute a SQL statement, which reuturns a integer stand for effect line number.
    /// </summary>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <returns>返回影响行数 (effect line number)</returns>
    public int ExecuteNonQuery(string cmdText)
    {
        OleDbCommand cmd = new OleDbCommand();
        using (OleDbConnection conn = new OleDbConnection(ConnectionValue))
        {
            PrepareCommand(cmd, conn,cmdText, null);
            int val = cmd.ExecuteNonQuery();
            return val;
        }
    }

    /// <summary>
    /// 用于执行一个Select语句返回一个datareader
    /// To excute a SQL statement, and reuturns a dataReader.
    /// default command type is text
    /// </summary>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>datareader</returns>
    public OleDbDataReader ExecuteReader(string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();
        OleDbConnection conn = new OleDbConnection(ConnectionValue);

        // we use a try/catch here because if the method throws an exception we want to
        // close the connection throw code, because no datareader will exist, hence the
        // commandBehaviour.CloseConnection will not work
        try
        {
            PrepareCommand(cmd, conn,cmdText, cmdParms);
            OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            cmd.Parameters.Clear();
            return rdr;
        }
        catch
        {
            conn.Close();
            throw;
        }
    }

    /// <summary>
    /// 用于执行一个Select语句返回一个datareader
    /// To excute a SQL statement, and reuturns a dataReader.
    /// </summary>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <returns>dataReader</returns>
    public OleDbDataReader ExecuteReader(string cmdText)
    {
        OleDbCommand cmd = new OleDbCommand();
        OleDbConnection conn = new OleDbConnection(ConnectionValue);
        // we use a try/catch here because if the method throws an exception we want to
        // close the connection throw code, because no datareader will exist, hence the
        // commandBehaviour.CloseConnection will not work
        try
        {
            PrepareCommand(cmd, conn, cmdText, null);
            OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return rdr;
        }
        catch
        {
            conn.Close();
            throw;
        }
    }

    /// <summary>
    /// 用于读取一个值,查询所返回的是结果集中第一行的第一列
    /// To excute a SQL statement, and returns the first column of the first line
    /// Default command type is text
    /// </summary>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>the first column of the first line</returns>
    public string ExecuteScalar(string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(ConnectionValue))
        {
            PrepareCommand(cmd, conn,cmdText, cmdParms);
            string val = Convert.ToString(cmd.ExecuteScalar());
            cmd.Parameters.Clear();
            return val;
        }
    }

    /// <summary>
    /// 用于读取一个值,查询所返回的是结果集中第一行的第一列
    /// To excute a SQL statement, and returns the first column of the first line
    /// </summary>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>the first column of the first line</returns>
    public string ExecuteScalar(string cmdText)
    {
        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(ConnectionValue))
        {
            PrepareCommand(cmd, conn, cmdText, null);
            string val = Convert.ToString(cmd.ExecuteScalar());
            return val;
        }
    }

    /// <summary>
    /// 在执行SQL语句之前的准备工作
    /// </summary>
    /// <param name="cmd">command</param>
    /// <param name="conn">connection</param>
    /// <param name="cmdType">command类型</param>
    /// <param name="cmdText">command字符串</param>
    /// <param name="cmdParms">参数列表</param>
    private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, string cmdText, OleDbParameter[] cmdParms)
    {
        cmd.Connection = conn;
        cmd.CommandText = cmdText;
        if (cmdParms != null)
        {
            foreach (OleDbParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
        if (conn.State != ConnectionState.Open)
        {
            conn.Open();
        }
    }

}

Access数据库访问类 帮助类的更多相关文章

  1. C# 对Access数据库操作的通用类

    (转载自博主Jerry很简单) //Access数据库-C# 操作类 代码using System;using System.Collections.Generic;using System.Linq ...

  2. Access数据库的常用数据类型和alter的用法

    一.Access比较常用的数据类型:文本.备注.数字.日期/时间.货币 意思          Sql                    Access 1)文本      nvarchar(30) ...

  3. c# vs2010 连接access数据库

    第一次在博客园写博文,由于文采不怎么好,即使是自己很熟悉的东西,写起来也会感觉到不知从何讲起,我想写的多了就好了. 这篇文章主要是介绍怎么用c# 语言 vs2010连接access数据库的,连接字符串 ...

  4. c# vs2010 连接access数据库(转)

    第一次在博客园写博文,由于文采不怎么好,即使是自己很熟悉的东西,写起来也会感觉到不知从何讲起,我想写的多了就好了. 这篇文章主要是介绍怎么用c# 语言 vs2010连接access数据库的,连接字符串 ...

  5. 使用SQLite数据库和Access数据库的一些经验总结

    在我的<Winform开发框架>中,可使用多种数据库作为程序的数据源,除了常规的Oracle数据库.SqlServer.MySql数据库,其中还包括了SQLite数据库.Access数据库 ...

  6. C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

    原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using Sy ...

  7. C#---数据库访问通用类、Access数据库操作类、mysql类 .

    //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System. ...

  8. C# ACCESS数据库操作类

    这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...

  9. ACCESS数据库C#操作类(包含事务)

    转自http://blog.csdn.net/allen3010/article/details/6336717 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的 ...

随机推荐

  1. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  2. ORA-04031: Unable To Allocate 32 Bytes Of Shared Memory

    记录一次生产库遇到的4031错误,后来通过调整sga大小将问题解决了 报错信息: ORA-04031: 无法分配 32 字节的共享内存 ("shared pool","s ...

  3. DevOps - 配置管理 - Puppet

    uppet总结 一.基础知识 1. Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构.Puppet这样的自动化配置管理工具可以帮助系统管理员更加方便的完成多台服务器的升级软件 ...

  4. JZOJ 5347. 遥远的金字塔

    Description Input Output Sample Input 5 3 1 6 1 5 3 5 4 4 4 4 Sample Output 15 Data Constraint 做法: 其 ...

  5. 免费证书Let’s Encrypt

    我们自己也可以签发 SSL 安全证书,但是我们自己签发的安全证书不会被主流的浏览器信任,所以我们需要被信任的证书授权中心( CA )签发的安全证书.而一般的 SSL 安全证书签发服务都比较贵,比如 G ...

  6. Scrapy框架中选择器的用法【转】

    Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法 请给作者点赞 --> 原文链接 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpa ...

  7. Storm: 性能优化 (转载)

    Storm 性能优化  原文地址:http://www.jianshu.com/p/f645eb7944b0 目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消 ...

  8. TCP/IP网络编程之多进程服务端(二)

    信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...

  9. “帮你APP”团队冲刺4

    1.整个项目预期的任务量 (任务量 = 所有工作的预期时间)和 目前已经花的时间 (所有记录的 ‘已经花费的时间’),还剩余的时间(所有工作的 ‘剩余时间’) : 所有工作的预期时间:88h 目前已经 ...

  10. Careercup - Microsoft面试题 - 5917873302142976

    2014-05-12 06:56 题目链接 原题: A link list contains following elements struct node{ int data; node* next; ...