Access通用类(适合不断变化数据库名的项目)

最近网站基本上都是用到了Access,后来发现几乎都要用到该数据库,因为和软件有一些联系,所以打算自己改一个AccessDBHelpser出来方便以后的开发,最后确定了一个适合一个项目就一个access数据库的情形,同时也适用于一个项目中不断上传access数据库的项目,该读取哪一个 access成了一个小小的难题,下面把代码贴出:
代码
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

/// <summary>
///AccessDBHelper 的摘要说明
/// </summary>
public class AccessDBHelper
{
    private  string connectionString = "Provider=Microsoft.Jet.OleDb.4.0;Jet Oledb:Database Password=mingmei114;Data Source=";
    
    public AccessDBHelper()
    {
        
    }
    public AccessDBHelper(string AsaFilePath)
    {
        connectionString += AsaFilePath;
    }
    private  OleDbConnection connection;

    public  OleDbConnection Connection
    {
        get
        {
            if (connection == null)
            {
                connection = new OleDbConnection(connectionString);
                connection.Open();
            }
            else if (connection.State == System.Data.ConnectionState.Closed)
            {
                connection.Open();
            }
            else if (connection.State == System.Data.ConnectionState.Broken)
            {
                connection.Close();
                connection.Open();
            }
            return connection;
        }
    }



    public  int ExecuteCommand(string safeSql)
    {
        OleDbCommand cmd = new OleDbCommand(safeSql,Connection);
        int result = cmd.ExecuteNonQuery();
        return result;
    }

    public  int ExecuteCommand(string sql, params SqlParameter[] values)
    {
        OleDbCommand cmd = new OleDbCommand(sql, Connection);
        cmd.Parameters.AddRange(values);
        return cmd.ExecuteNonQuery();
    }

    public  int GetScalar(string safeSql)
    {
        OleDbCommand cmd = new OleDbCommand(safeSql, Connection);
        int result = Convert.ToInt32(cmd.ExecuteScalar());
        return result;
    }

    public  int GetScalar(string sql, SqlParameter[] values)
    {
        OleDbCommand cmd = new OleDbCommand(sql, Connection);
        cmd.Parameters.AddRange(values);
        int result = Convert.ToInt32(cmd.ExecuteScalar());
        return result;
    }

    public  OleDbDataReader GetReader(string safeSql)
    {
        OleDbCommand cmd = new OleDbCommand(safeSql, Connection);
        OleDbDataReader reader = cmd.ExecuteReader();
        return reader;
    }

    public  OleDbDataReader GetReader(string sql, SqlParameter[] values)
    {
        OleDbCommand cmd = new OleDbCommand(sql, Connection);
        cmd.Parameters.AddRange(values);
        OleDbDataReader reader = cmd.ExecuteReader();
        return reader;
    }

    public  DataTable GetDataSet(string safeSql)
    {
        DataSet ds = new DataSet();
        OleDbCommand cmd = new OleDbCommand(safeSql, Connection);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        da.Fill(ds);
        return ds.Tables[0];
    }

    public  DataTable GetDataSet(string sql, SqlParameter[] values)
    {
        DataSet ds = new DataSet();
        OleDbCommand cmd = new OleDbCommand(sql, Connection);
        cmd.Parameters.AddRange(values);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        da.Fill(ds);
        return ds.Tables[0];
    }


}

下面是前台的代码:
代码
protected string BindDrName(string srk) //收款人 销售员
    {
        if (Session["shopid"] == null)
            Response.Redirect("MemberLogin.aspx");
        string myshopDB = Session["shopid"].ToString();

        string asafilepath = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/" + myshopDB + ".asa");
        AccessDBHelper acc = new AccessDBHelper(asafilepath);
        string sql = "select * from dr where dr_hm='" + srk +"'";
        DataTable dt = acc.GetDataSet(sql);
        string drname = "";
        foreach (DataRow item in dt.Rows)
        {
            drname = item["dr_name"].ToString();
        }
        return drname;
    }



该项目 在前台登录的时候做了一个下拉列表记录 选择的是那一项,然后记录该value然后存入session中,asa就是access数据库,名字与dropdownlist中的value对应,因为都是和数据库的某个id对应起来的,access数据库的名字就是一个id值,后缀名为 .asa。这一系列不断上传的asa文件就存放在根目录的App_Data文件中!


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论