求c#版的access数据库访问类,求c#版的access数据库访问类,功能一般就可以了,像这个差不多 http://blog.csdn.net/teng_s2000/archive/2005/10/27/517449.aspx这个是sql版的,有没有 access版的,

解决方案 »

  1.   

    using System;
    using System.Data.OleDb;
    using System.Data;
    using System.Web;
    namespace SaveMessage
    {
    /// <summary>
    /// DataAccess 的摘要说明。
    /// </summary>
    public class DataAccess
    {
    private string dbPath;//Access数据库的变量
    /// <summary>
    /// 创建类的一个属性,Access数据库路径的属性
    /// </summary>
    public string DBpath
    {
    get{return dbPath;}
    set{dbPath=value;}
    }
    /// <summary>
    /// 构造函数中设置DBpath的值
    /// </summary>
    /// <param name="AccessPath">程序集中的相对路径</param>
    public DataAccess(string AccessPath)  
    {
    this.DBpath=HttpContext.Current.Server.MapPath("")+AccessPath;
    }
    private OleDbConnection con;
    /// <summary>
    /// 确认链接打开
    /// </summary>
    private void Open()
    {
    if(con==null)
    con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DBpath);
    if(con.State==ConnectionState.Closed)
    con.Open();
    }
    /// <summary>
    /// 创建一个命令对象并返回该对象
    /// </summary>
    /// <param name="sqlStr">数据库语句</param>
    /// <returns>OleDbCommand</returns>
    private OleDbCommand CreateCommand(string sqlStr)
    {
    Open();
    OleDbCommand cmd=new OleDbCommand();
    cmd.CommandType=CommandType.Text;
    cmd.CommandText=sqlStr;
    cmd.Connection=con;
    return cmd;
    }
    /// <summary>
    /// 创建一个命令对象并返回该对象
    /// </summary>
    /// <param name="sqlStr">数据库语句</param>
    /// <param name="parame">命令参数数组</param>
    /// <returns>OleDbCommand</returns>
    private OleDbCommand CreateCommand(string sqlStr,OleDbParameter[] parame)
    {
    Open();
    OleDbCommand cmd=new OleDbCommand();
    cmd.CommandType=CommandType.Text;
    cmd.CommandText=sqlStr;
    cmd.Connection=con;
    if(parame!=null)
    {
    foreach(OleDbParameter pare in parame)
    {
    cmd.Parameters.Add(pare);
    }
    }
    return cmd;
    }
    /// <summary>
    /// 创建命令参数
    /// </summary>
    /// <param name="ParameName">参数名称</param>
    /// <param name="dbType">参数数据类型</param>
    /// <param name="size">参数大小</param>
    /// <param name="direction">参数类型</param>
    /// <param name="Value">参数的值</param>
    /// <returns>参数</returns>
    public OleDbParameter MakeParameter(string ParameName,OleDbType dbType,Int32 size,ParameterDirection direction,object Value)
    {
    OleDbParameter param;
    if(size > 0)
    param=new OleDbParameter(ParameName,dbType,size);
    else
    param=new OleDbParameter(ParameName,dbType);
    param.Direction=direction;
    if(!(param.Direction==ParameterDirection.Output && Value==null))
    param.Value=Value;
    return param;
    }
    /// <summary>
    /// 传入输入参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param></param>
    /// <param name="Size">参数大小</param>
    /// <param name="Value">参数值</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeInParam(string ParamName, OleDbType DbType, int Size, object Value) 
    {
    return MakeParameter(ParamName, DbType, Size, ParameterDirection.Input, Value);
    } /// <summary>
    /// 传入返回值参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeOutParam(string ParamName, OleDbType DbType, int Size) 
    {
    return MakeParameter(ParamName, DbType, Size, ParameterDirection.Output, null);
    } /// <summary>
    /// 传入返回值参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeReturnParam(string ParamName, OleDbType DbType, int Size) 
    {
    return MakeParameter(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
    }
    /// <summary>
    /// 生成一个数据读取器OleDbDataReader并返回该OleDbDataReader
    /// </summary>
    /// <param name="sqlStr">数据库查询语句</param>
    /// <returns>返回一个DataReader对象</returns>
    public OleDbDataReader GetReader(string sqlStr)
    {
    OleDbCommand cmd=CreateCommand(sqlStr);
    OleDbDataReader reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
    //CommadnBehavior.CloseConnection是将于DataReader的数据库链接关联起来
    //当关闭DataReader对象时候也自动关闭链接
    return reader;
    }
    /// <summary>
    /// 生成一个数据读取器OleDbDataReader并返回该OleDbDataReader
    /// </summary>
    /// <param name="sqlStr">数据库查询语句</param>
    /// <param name="parame">命令参数数组</param>
    /// <returns>返回一个DataReader对象</returns>
    public OleDbDataReader GetReader(string sqlStr,OleDbParameter[] parame)
    {
    OleDbCommand cmd=CreateCommand(sqlStr,parame);
    OleDbDataReader reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
    //CommadnBehavior.CloseConnection是将于DataReader的数据库链接关联起来
    //当关闭DataReader对象时候数据库连接也自动关闭链接
    return reader;
    }
    /// <summary>
    /// 执行SQL语句
    /// </summary>
    /// <param name="sqlStr">SQL语句</param>
    /// <returns>返回数值当执行成功时候返回true,失败则返回false</returns>
    public bool ExecuteNonQury(string sqlStr)
    {
    OleDbCommand cmd = CreateCommand(sqlStr);
    int result = cmd.ExecuteNonQuery();
    if(result==-1 | result==0)
    {
    cmd.Dispose();
    Close();
    return false;
    }
    else
    {
    cmd.Dispose();
    Close();
    return true;
    }
    }
    /// <summary>
    ///  执行带有参数的SQL语句
    /// </summary>
    /// <param name="sqlStr">SQL语句</param>
    /// <param name="parame">命令参数数组</param>
    /// <returns>返回数值当执行成功时候返回true,失败则返回false</returns>
    public bool ExecuteNonQury(string sqlStr,OleDbParameter[] parame)
    {
    OleDbCommand cmd = CreateCommand(sqlStr,parame);
    int result = cmd.ExecuteNonQuery();
    if(result==-1 | result==0)
    {
    cmd.Dispose();
    Close();
    return false;
    }
    else
    {
    cmd.Dispose();
    Close();
    return true;
    }
    }
    /// <summary>
    /// 执行数据库查询并返回一个数据集
    /// </summary>
    /// <param name="sqlStr">SQL查询语句</param>
    /// <param name="tableName">填充数据集表格的名称</param>
    /// <returns>返回整个数据集</returns>
    public DataSet GetDataSet(string sqlStr,string tableName)
    {
    DataSet dataset = new DataSet();
    OleDbCommand cmd = CreateCommand(sqlStr);
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd);
    dataAdapter.Fill(dataset,tableName);
    cmd.Dispose();
    Close();
    dataAdapter.Dispose();
    return dataset;
    }
    /// <summary>
    /// 执行带有参数的数据库查询
    /// </summary>
    /// <param name="sqlStr">SQL查询语句</param>
    /// <param name="tableName">填充数据集表格的名称</param>
    /// <param name="parame">参数数组</param>
    /// <returns>返回整个数据集</returns>
    public DataSet GetDataSet(string sqlStr,string tableName,OleDbParameter[] parame)
    {
    DataSet dataset = new DataSet();
    OleDbCommand cmd = CreateCommand(sqlStr,parame);
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd);
    dataAdapter.Fill(dataset,tableName);
    cmd.Dispose();
    Close();
    dataAdapter.Dispose();
    return dataset;
    }
    /// <summary>
    /// 关闭数据库
    /// </summary>
    public void Close()
    {
    if(con!=null)
    con.Close();
    }
    /// <summary>
    /// 释放资源
    /// </summary>
    public void Dispose()
    {
    if(con!=null)
    {
    con.Dispose();
    con=null;
    }
    }
    }
    } 改自别人的,还没有测试..LZ自己测试一下吧