C#数据库操作类AccessHelper实例

本文实例讲述了C#数据库操作类AccessHelper。分享给大家供大家参考。

具体实现方法如下:

代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Data.OleDb;
using ahwildlife.Utils;

/// <summary>
/// AccessHelper 的摘要说明
/// </summary>
public class AccessHelper
{
    #region 变量
    protected static OleDbConnection conn = new OleDbConnection();
    protected static OleDbCommand comm = new OleDbCommand();
    protected static string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ahwildlife.mdb;Persist Security Info=False;Jet OLEDB:Database Password=sa;";
    #endregion

#region 构造函数
    /// <summary>
    /// 构造函数
    /// </summary>
    public AccessHelper()
    {

}
    #endregion

#region 打开数据库
    /// <summary>
    /// 打开数据库
    /// </summary>
    private static void openConnection()
    {
        if (conn.State == ConnectionState.Closed)
        {
            conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ahwildlife.mdb;Persist Security Info=False;Jet OLEDB:Database Password=sa;";
            comm.Connection = conn;
            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
    #endregion

#region 关闭数据库
    /// <summary>
    /// 关闭数据库
    /// </summary>
    private static void closeConnection()
    {
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
            conn.Dispose();
            comm.Dispose();
        }
    }
    #endregion

#region 执行sql语句
    /// <summary>
    /// 执行sql语句
    /// </summary>
    public static void ExecuteSql(string sqlstr)
    {
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            comm.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            closeConnection();
        }
    }
    #endregion

#region 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭这个对象。
    /// <summary>
    /// 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭这个对象。
    /// </summary>
    public static OleDbDataReader DataReader(string sqlstr)
    {
        OleDbDataReader dr = null;
        try
        {
            openConnection();
            comm.CommandText = sqlstr;
            comm.CommandType = CommandType.Text;

dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
        }
        catch
        {
            try
            {
                dr.Close();
                closeConnection();
            }
            catch { }
        }
        return dr;
    }
    #endregion

#region 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭
    /// <summary>
    /// 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭
    /// </summary>
    public static void DataReader(string sqlstr, ref OleDbDataReader dr)
    {
        try
        {
            openConnection();
            comm.CommandText = sqlstr;
            comm.CommandType = CommandType.Text;
            dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
        }
        catch
        {
            try
            {
                if (dr != null && !dr.IsClosed)
                    dr.Close();
            }
            catch
            {
            }
            finally
            {
                closeConnection();
            }
        }
    }
    #endregion

#region 返回指定sql语句的DataSet
    /// <summary>
    /// 返回指定sql语句的DataSet
    /// </summary>
    /// <param name="sqlstr"></param>
    /// <returns></returns>
    public static DataSet DataSet(string sqlstr)
    {
        DataSet ds = new DataSet();
        OleDbDataAdapter da = new OleDbDataAdapter();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds);

}
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            closeConnection();
        }
        return ds;
    }
    #endregion

#region 返回指定sql语句的DataSet
    /// <summary>
    /// 返回指定sql语句的DataSet
    /// </summary>
    /// <param name="sqlstr"></param>
    /// <param name="ds"></param>
    public static void DataSet(string sqlstr, ref DataSet ds)
    {
        OleDbDataAdapter da = new OleDbDataAdapter();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds);
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            closeConnection();
        }
    }
    #endregion

#region 返回指定sql语句的DataTable
    /// <summary>
    /// 返回指定sql语句的DataTable
    /// </summary>
    /// <param name="sqlstr"></param>
    /// <returns></returns>
    public static DataTable DataTable(string sqlstr)
    {
        DataTable dt = Common.GetDataTableCache(sqlstr);//读缓存
        if (dt != null)
        {
            return dt.Copy();
        }
        else
        {
            dt = new DataTable();
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                using (OleDbConnection conn = new OleDbConnection())
                {
                    conn.ConnectionString = connectionString;
                    conn.Open();
                    using (OleDbCommand comm = new OleDbCommand())
                    {
                        comm.Connection = conn;
                        comm.CommandType = CommandType.Text;
                        comm.CommandText = sqlstr;
                        da.SelectCommand = comm;
                        da.Fill(dt);
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                closeConnection();
            }
            Common.InsertDataTableCache(sqlstr, dt);//添加缓存
            return dt.Copy();
        }
    }
    #endregion

#region 返回指定sql语句的DataTable
    /// <summary>
    /// 返回指定sql语句的DataTable
    /// </summary>
    public static void DataTable(string sqlstr, ref DataTable dt)
    {
        OleDbDataAdapter da = new OleDbDataAdapter();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(dt);
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            closeConnection();
        }
    }
    #endregion

#region 返回指定sql语句的DataView
    /// <summary>
    /// 返回指定sql语句的DataView
    /// </summary>
    /// <param name="sqlstr"></param>
    /// <returns></returns>
    public static DataView DataView(string sqlstr)
    {
        OleDbDataAdapter da = new OleDbDataAdapter();
        DataView dv = new DataView();
        DataSet ds = new DataSet();
        try
        {
            openConnection();
            comm.CommandType = CommandType.Text;
            comm.CommandText = sqlstr;
            da.SelectCommand = comm;
            da.Fill(ds);
            dv = ds.Tables[0].DefaultView;
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            closeConnection();
        }
        return dv;
    }
    #endregion
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#使用ADO.Net部件来访问Access数据库的方法

    数据库的访问是所有编程语言中最重要的部分,C#提供了ADO.Net部件用于对数据库进行访问.我们将从最简单易用的微软Access数据库入手讨论在C#中对数据库的访问. C#中的Connection对象和Command对象与Access类似,但在这里我们还将使用其另一个与RecordSet类似的被称作ADODataReader的对象,它负责处理与查询有关的RecordSet对象. 首先,必须使用微软的Access创建一个数据库.运行Access,创建一个数据库,但不要创建任何表(我们将在下面的程序

  • C#动态创建Access数据库及表的方法

    本文实例讲述了C#动态创建Access数据库及表的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: //添加两个com组件引用 //Microsoft ADO Ext. 2.8 for DDL and Security //Microsoft ActiveX Data Objects 2.8 Library using System; using System.Collections.Generic; using System.Linq; using System.Text

  • C#编程实现连接ACCESS数据库实例详解

    本文实例讲述了C#编程实现连接ACCESS数据库的方法.分享给大家供大家参考,具体如下: 一.建立FORM窗体,加一个按钮控件,加一个DATAGRIDVIEW控件. 二.双击FORM,加入命名空间 复制代码 代码如下: using System.Data.OleDb; 双击按钮,进入按钮代码,写如下代码 OleDbConnection strConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source

  • C# Access数据库增删查改的简单方法

    引用集:using System.Data.OleDb; 复制代码 代码如下: static string exePath = System.Environment.CurrentDirectory;//本程序所在路径 //创建连接对象OleDbConnection conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=" + exePath + @"\文件名.mdb");

  • C#实现的ACCESS数据库操作类完整实例

    本文实例讲述了C#实现的ACCESS数据库操作类.分享给大家供大家参考,具体如下: 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! using System; using System.Text; using System.Collections; using System.Collections.Specialized; using System.D

  • c# 连接access数据库config配置

    <configuration>  <appSettings> <add key="*" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:aa.accdb;Persist Security Info=False"/>  </appSettings></configuration>

  • 利用C#远程存取Access数据库

    一. 技术要点 我们都知道Windows应用程序在运行时会启动一个进程,其总包括若干线程,不同的进程之间通信是开发分布式应用程序所必需的,传统上,这不仅需要深入了解通信流两端上进程的对象,而且还要深入了解低级别协议的宿主.应用程序编程接口以及配置工具等.总之,它是一项需要大量专业知识和经验的复杂任务. 幸好.Net为我们提供了远程处理功能,它所提供的通信方法可以快速而方便地完成上述建立通信的任务.因此,无论是需要快速开发 Web 应用程序,还是要花费更多时间生成关键的企业范围的应用程序,.NET

  • c#连接access数据库操作类分享

    1.配置web.config文件:配置数据库连接参数(根据实际情况设置数据库路径和密码) 复制代码 代码如下: <configuration><appSettings/><connectionStrings><add name="ConnectionString" connectionString="PRovider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\keleyi\App_Data\db.m

  • C#通过oledb访问access数据库的方法

    本文实例讲述了C#通过oledb访问access数据库的方法.分享给大家供大家参考.具体分析如下: 这里演示了如何在 C# 中使用 Microsoft Access 数据库.包括如何创建数据集并从数据库向该数据集添加表. // OleDbSample.cs // 若要从命令行生成此示例,请使用命令: // csc oledbsample.cs using System; using System.Data; using System.Data.OleDb; using System.Xml.Se

  • C# Oracle数据库操作类实例详解

    本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务.需要特别指出的是:在执行SQL语句,返回 DataReader之前一定要先用.read()打开,然后才能读到数据,再用hashTable对数据库进行insert,update,del操作,注意此时只能用默认的数据库连接"connstr". 完整

  • C#动态创建Access数据库及密码的方法

    以前工作中需要全新的Access数据库,可以复制数据库,也可以把新的数据库放到资源里面,用新数据库的时候释放出来,都感觉不爽,还是动态生成心理舒服. 生成数据库要使用ADO,首先添加引用. using System.IO; using System.Data.OleDb; //连接Access数据库 using ADOX; //引用COM:Microsoft ADO Ext. 2.8 for DDL and Security //添加引用:Microsoft ActioveX Data Obje

  • C#使用晚绑定来实现压缩Access数据库的方法

    本文实例讲述了C#使用晚绑定来实现压缩Access数据库的方法,通常来说VB对Com后期绑定支持得很好,在C#中可以使用反射来实现.具体方法如下: 函数实现代码如下: public static void CompactAccessDB(string strMdbName) { string TempMdbName = Application.StartupPath + @"\Temp.mdb"; //创建 Jet 引擎对象 object objJetEngine = Activato

随机推荐