使用 Enterprise Library (2006年1月版)切换数据库ms sql-->ms access

 

使用 Enterprise Library (2006年1月版) 只改设置文件切换数据库

先说功能代码部分,有以下代码:

     Database db = DatabaseFactory.CreateDatabase();
     string strSQL = " SELECT id, name FROM t_001 WHERE (id IN (6, 7, 9, 8)) ";
     DataSet ds = db.ExecuteDataSet(CommandType.Text, strSQL);
     this.dataGridView1.DataSource = ds.Tables[0];  

代码很简单,就是从数据库中读取数据,然后展示在 DataGridView 控件中。


首先来看简单的切换
Access 数据库和 SQL Server 数据库。

使用 Sql Express 2005 的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </configSections>
  <dataConfiguration defaultDatabase="MyTestConnectionString" />
  <connectionStrings>
    <add name="MyTestConnectionString" connectionString="server=(local)/SQLEXPRESS;database=EntLibQuickStarts;Integrated Security=true;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

使用 Access 数据库 的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </configSections>
  <dataConfiguration defaultDatabase="MyTestConnectionString" />
  <connectionStrings>
    <add name="MyTestConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/My2005Codes/TestCode/AccessDB.mdb;"
      providerName="System.Data.OleDb" />
  </connectionStrings>
</configuration>

说明:
上述两者只对链接字符串的 providerName 、connectionString 发生了变化,就可以自动切换数据库。


下面再复杂点,假设我们有个冷门的数据库链接提供程序,比如DB2等。由于不容易找到模拟环境,
我们下面演示的是给 System.Data.OleDb 数库提供程序起个另外的别名 MyOleDBDatabase ,然后调用这个别名 MyOleDBDatabase。
实际这些冷门的数据库提供程序,跟这的配置方法是一样的。

配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </configSections>
  <dataConfiguration defaultDatabase="MyTestConnectionString" />
  <connectionStrings>
    <add name="MyTestConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/My2005Codes/TestCode/AccessDB.mdb;"
      providerName="MyOleDBDatabase" />
  </connectionStrings>
  <system.data>
    <DbProviderFactories>
      <add name="my Generic Database" invariant="MyOleDBDatabase" description="An alias for the OleDBProvider" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </DbProviderFactories>
  </system.data>
</configuration>


以上只是简单的给了几个配置文件的范例,仅供参考。

注意:
Database db = DatabaseFactory.CreateDatabase();
这行代码返回的 Database 类型的 db,实际的类型,是不一样的。

在 2006年1月份的 Enterprise Library  中,提供了 3个
派生自 Microsoft.Practices.EnterpriseLibrary.Data.Database  的类,依次是:
     Microsoft.Practices.EnterpriseLibrary.Data.GenericDatabase
     Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase
     Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase

上述三个配置文件中,返回的 db 虽然都是 Database 父类,但是子类是不一样的。

链接到 Sql Express 2005 的 这个配置文件, 返回的 db 其实是 SqlDatabase 类型
其他两个返回的是 GenericDatabase 类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值