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

最近网站基本上都是用到了Access,后来发现几乎都要用到该数据库,因为和软件有一些联系,所以打算自己改一个AccessDBHelpser出来方便以后的开发,最后确定了一个适合一个项目就一个access数据库的情形,同时也适用于一个项目中不断上传access数据库的项目,该读取哪一个access成了一个小小的难题,下面把代码贴出:
ExpandedBlockStart.gif 代码
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 ];
    }


}

下面是前台的代码:

ExpandedBlockStart.gif 代码
  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文件中!

 

转载于:https://www.cnblogs.com/Simcoder/archive/2010/06/13/1757939.html

软件详细信息 软件可建立并管理Access数据库、Xbase数据库、Excel数据库及Text文本数据库。主要功能有: 一、字段开关与顺序控制功能。可控制数据显示表、记录排序表、浏览编辑状态及数据导出结果。换言之,只能显示、排序、编辑及导出被添加的字段,且显示、排序、编辑及导出结果的顺序与添加字段的顺序一致。 二、数据计算与编辑功能。包括按线性公式批量修改记录、按工程公式批量修改记录、浏览编辑记录、修改单元格记录、增加记录、删除记录、合并记录等。 三、通用查询与检索功能。除可在全程或设定的范围内管理记录外,还可设定过滤条件,对只符合条件及规定范围内的记录进行操作。 四、数据排序功能。排序的结果可导出为Access数据(MDB)、Excel数据(XLS)、文本数据(TXT)、Xbase数据(DBF)等格式。  五、数据比较功能。可比较两个表的结构属性及记录异同情况,也可比较同一表中两个字段的异同情况,并存储比较结果。  六、记录合并功能。可将数据表中某列(关键字段)具有相同值的所有记录数据进行合并。 七、记录连接功能。可将两个表中符合条件(两个表中各自选定的关键字段值相同)的所有记录连接生成一个新的表。 八、数据统计功能。可对表中数据以记录为单位进行汇总(横向统计)、也可以字段为单位进行汇总(纵向统计,即分汇总)。统计的结果可导出为Access数据(MDB)、Excel数据(XLS)、文本数据(TXT)、Xbase数据(DBF)等格式。 九、数据导入导出功能。可将Access数据库、Xbase数据库、Excel数据库、Text文本数据库等四种格式的数据库格式进行相互导入导出。导出前可设置过滤条件、导出范围及导出字段开关与顺序。 十、文本数据分隔符转换功能。为了兼容除逗号以外的其它分隔符的文本文件,应用此模块进行分隔符转换(即替换),以适应本软件或用户其它软件的特殊要求。 十一、曲线显示与打印功能。不仅可显示任意字段变量随记录号的变化曲线,而且还可显示任意两个字段变量之间的关系曲线。显示的曲线可打印输出到WORD文档中。 十二、结构维护功能。可新建库、压缩库、增加表、删除表、修改表、增加字段、删除字段、修改字段属性(包括字段称、字段型、字段尺寸)。 十三、密码管理功能。可管理有密码的数据库,并具有设置密码、修改密码、清除密码、破解密码等功能。 十四、管理非Access文件。包括Xbase、Excel、Text等型的文件,并可对记录数据进行查询检索、编辑、统计、排序,且管理的结果可导出为mdbdbf、txt、xls等格式。 十五、用户可根据实际应用情况,自定义软件的称、数据处理路径、数据备份路径等,使数据管理更加个性化。鼠标经过大多数控件处,均有相关帮助与提示信息。软件可在菜单方式与集成方式两种界面之间自由切换,并根据屏幕分辨率软件自动调节窗体,使窗体始终保持最大的可视界面,建议屏幕分辨率设置为1024×768为最佳。 与9.1版相比,9.2版增加了本数据分隔符转换功能;进一步完善了导入导出功能,使导入导出成功率更高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值