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文件中!

 

你可能感兴趣的:(Access)