在开发框架中扩展微软企业库,支持使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库

在前面随笔《在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动》中介绍了在代码生成工具中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,如果我们在框架应用中需要使用这个如何处理了?由于我们开发框架底层主要使用微软企业库(目前用的版本是4.1),如果是使用它官方的Oracle扩展,那么就是使用EntLibContrib.Data.OdpNet(这个企业库扩展类库使用了Oracle.DataAccess.dll),不过这种方式还是受限于32位和64位的问题;假如我们使用ODP.NET(Oracle.ManagedDataAccess.dll)方式,可以使用自己扩展企业库支持即可,类似于我们支持国产数据库--达梦数据库一样的原理,使用Oracle.ManagedDataAccess类库可以避免32位和64位冲突问题,实现统一兼容。

1、扩展支持ODP.NET(Oracle.ManagedDataAccess.dll)访问

比奇小说网 m.biqi.org

为了实现自定义的扩展支持,我们需要对企业库的扩展类库进行处理,类似我们之前编写达梦数据库的自定义扩展类库一样,这方面可以了解下之前的随笔《基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作》,我们现在增加对ODP.NET(Oracle.ManagedDataAccess.dll)方式的扩展支持。

首先我们创建一个项目,并通过Nugget的方式获得对应的Oracle.ManagedDataAccess.dll类库,参考企业库对于Mysql的扩展或者其他的扩展,稍作调整即可。

 OracleDatabase类似下面代码

using System;
using System.Data;
using System.Data.Common;

using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Configuration;
using Oracle.ManagedDataAccess.Client;

namespace EntLibContrib.Data.OracleManaged
{
    /// <summary>
    /// <para>Oracle数据库对象(使用ODP驱动)</para>
    /// </summary>
    /// <remarks>
    /// <para>
    /// Internally uses OracleProvider from Oracle to connect to the database.
    /// </para>
    /// </remarks>
    [DatabaseAssembler(typeof(OracleDatabaseAssembler))]
    public class OracleDatabase : Database
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="OracleDatabase"/> class
        /// with a connection string.
        /// </summary>
        /// <param name="connectionString">The connection string.</param>
        public OracleDatabase(string connectionString) : base(connectionString, OracleClientFactory.Instance)
        {
        }
        
        /// <summary>
        /// <para>
        /// Gets the parameter token used to delimit parameters for the
        /// Oracle database.</para>
        /// </summary>
        /// <value>
        /// <para>The '?' symbol.</para>
        /// </value>
        protected char ParameterToken
        {
            get
            {
                return ':';
            }
        }

        .........

主要就是把对应的类型修改为Oracle的即可,如Oracle的名称,以及参数的符号为 :等地方,其他的一一调整即可,不在赘述。

完成后,修改程序集名称,编译为 EntLibContrib.Data.OracleManaged.dll 即可。

 

2、框架应用的数据库配置项设置

完成上面的步骤,我们就可以在配置文件中增加配置信息如下所示,它就能正常的解析并处理了。

 

 上面使用了两种方式,一种是官方扩展的EntLibContrib.Data.OdpNet方式,一种是我们这里刚刚出炉的 EntLibContrib.Data.OracleManaged方式,完整的数据库支持文件信息如下所示。

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/>
    <section name="oracleConnectionSettings" type="EntLibContrib.Data.OdpNet.Configuration.OracleConnectionSettings, EntLibContrib.Data.OdpNet" />
  </configSections>
  <connectionStrings>
    <!--SQLServer数据库的连接字符串-->
    <add name="sqlserver" providerName="System.Data.SqlClient" connectionString="Persist Security Info=False;Data Source=(local);Initial Catalog=WinFramework;Integrated Security=SSPI"/>
    
    <!--Oracle数据库的连接字符串-->
    <add name="oracle" providerName="System.Data.OracleClient" connectionString="Data Source=orcl;User ID=whc;Password=whc"/>
    
    <!--MySQL数据库的连接字符串-->
    <add name="mysql" providerName="MySql.Data.MySqlClient" connectionString="Server=localhost;Database=WinFramework;Uid=root;Pwd=123456;"/>
    
    <!--PostgreSQL数据库的连接字符串-->
    <add name="npgsql" providerName="Npgsql" connectionString="Server=localhost;Port=5432;Database=postgres;User Id=postgres;Password=123456"/>
    
    <!--路径符号|DataDirectory|代表当前运行目录-->    
    <!--SQLite数据库的连接字符串-->
    <add name="sqlite"  providerName="System.Data.SQLite" connectionString="Data Source=|DataDirectory|\WinFramework.db;Version=3;" />
    <!--Microsoft Access数据库的连接字符串-->
    <add name="access" providerName="System.Data.OleDb" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\WinFramework.mdb;User ID=Admin;Jet OLEDB:Database Password=;" />   
    
    <!--IBM DB2数据库的连接字符串-->
    <add    name="db2" providerName="IBM.Data.DB2"    connectionString="database=whc;uid=whc;pwd=123456"/>
    
    <!--采用OdpNet方式的Oracle数据库的连接字符串-->
    <add    name="oracle2"    providerName="Oracle.DataAccess.Client"    connectionString="Data Source=orcl;User id=win;Password=win;" />
    <add    name="oracle3"    providerName="OracleManaged"    connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl.mshome.net)));User ID=win;Password=win" />
  </connectionStrings>
  <dataConfiguration defaultDatabase="oracle3">
    <providerMappings>
      <add databaseType="EntLibContrib.Data.MySql.MySqlDatabase, EntLibContrib.Data.MySql" name="MySql.Data.MySqlClient" />
      <add databaseType="EntLibContrib.Data.SQLite.SQLiteDatabase, EntLibContrib.Data.SqLite" name="System.Data.SQLite" />
      <add databaseType="EntLibContrib.Data.PostgreSql.NpgsqlDatabase, EntLibContrib.Data.PostgreSql" name="Npgsql" />      
      <add databaseType="EntLibContrib.Data.DB2.DB2Database, EntLibContrib.Data.DB2" name="IBM.Data.DB2" />
      <add databaseType="EntLibContrib.Data.OdpNet.OracleDatabase, EntLibContrib.Data.OdpNet" name="Oracle.DataAccess.Client" />
      <add databaseType="EntLibContrib.Data.Dm.DmDatabase, EntLibContrib.Data.Dm" name="Dm" />
      <!--增加ODP.NET(Oracle.ManagedDataAccess.dll)方式的扩展支持-->
      <add databaseType="EntLibContrib.Data.OracleManaged.OracleDatabase, EntLibContrib.Data.OracleManaged" name="OracleManaged" />
    </providerMappings>
  </dataConfiguration>
  
  <appSettings>

  </appSettings>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

这样我们底层就可以实现多种数据库的兼容访问了。

采用不同的数据库,我们需要为不同数据库的访问层进行生成处理,如为SQLServer数据的表生成相关的数据访问层DALSQL,里面放置各个表对象的内容,不过由于采用了相关的继承类处理和基于数据库的代码生成,需要调整的代码很少。

我们来编写一段简单的程序代码来测试支持这种ODP.net方式,测试代码如下所示。

private void btnGetData_Click(object sender, EventArgs e)
{
    string sql = "select * from T_Customer";// + " Where Name = :name";
    Database db = DatabaseFactory.CreateDatabase();
    DbCommand command = db.GetSqlStringCommand(sql);
    //command.Parameters.Add(new OracleParameter("name", "张三"));

    using (var ds = db.ExecuteDataSet(command))
    {
        this.dataGridView1.DataSource = ds.Tables[0];   
    }
}

测试界面效果如下所示。

以上这些处理,可以适用于Web框架、Bootstrap开发框架、Winform开发框架、混合式开发框架中的应用,也就是CS、BS都可以使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要下载oracle.manageddataaccess.dll,需要遵循以下步骤: 1. 打开浏览器,并前往Oracle官方网站(https://www.oracle.com/)。 2. 在网站的顶部导航栏找到“产品和服务”菜单,并将鼠标悬停在上面以展开更多选项。 3. 在下拉菜单选择“数据库”选项,然后选择“Oracle Database”子菜单。 4. 在“Oracle Database”页面上,您将找到不同版本的数据库产品。请根据您的需要选择合适的版本,并单击相应的链接。 5. 在选择的数据库版本页面上,向下滚动直到找到“下载”选项。单击该选项。 6. 在下载页面上,您将看到不同的组件和工具的下载链接。找到并单击“Managed Data Access Components (ODP.NET, ODBC, LDAP, and ASP.NET) Downloads”链接。 7. 在ODAC下载页面上,您将看到不同版本的ODAC和相关工具。请根据您的操作系统和需要下载的版本选择链接。 8. 单击所选版本的链接后,您将被重定向到一个新页面,其列出了可下载的文件。请检查并单击“Managed Data Access (ODP.NET, ODP.NET.Managed, ODBC, and OLE DB) xcopy only”链接。 9. 在文件列表,找到包含“oracle.manageddataaccess.dll”的文件。单击该文件的链接。 10. 在文件下载对话框,选择保存文件的位置,并单击"保存"按钮。 11. 下载完成后,您可以在已保存的位置找到oracle.manageddataaccess.dll文件。 请注意,下载的文件可能因Oracle官方网站的更新而有所不同。确保选择适合您需要和操作系统的正确版本,并确保从可信的来源下载文件。 ### 回答2: 要下载oracle.manageddataaccess.dll,可以按照以下步骤操作: 1. 打开浏览器,前往Oracle官方网站。 2. 在网站上找到“产品和服务”或“下载”等相关选项。 3. 在下载页面使用搜索栏搜索“oracle.manageddataaccess.dll”。 4. 确保选择适合您系统版本和需求的DLL文件。 5. 单击下载链接,并选择将文件保存到您喜欢的位置。 6. 下载完成后,浏览到文件所在的目录。 7. 右键单击文件,选择“提取所有”或类似的选项解压文件。 8. 将解压后的oracle.manageddataaccess.dll文件复制到您需要使用它的应用程序文件夹。 9. 根据您的具体情况,可能需要在应用程序进行一些配置和设置,以确保DLL正确被调用和使用。 请注意,确保从可靠和官方来源下载oracle.manageddataaccess.dll文件,以避免安全问题和兼容性问题。并且,在修改系统文件或应用程序之前,最好备份相关数据以避免意外损失。 ### 回答3: oracle.manageddataaccess.dll是用于连接Oracle数据库.NET数据提供程序的一部分,它提供了在.NET应用程序访问和操作Oracle数据库所需的功能。 要下载oracle.manageddataaccess.dll,您需要按照以下步骤进行操作: 1. 打开您的浏览器,访问Oracle官方网站(https://www.oracle.com/)。 2. 在网站上方的搜索框输入“Oracle Data Access Components”或“ODAC”并按下回车键。 3. 在搜索结果选择适合您的操作系统和.NET版本的ODAC版本。 4. 单击所选版本的下载按钮。 5. 在弹出窗口,选择一个可用的下载选项(通常是32位或64位)。 6. 单击下载按钮,等待下载完成。 7. 打开下载的ZIP文件并解压缩它。 8. 导航至解压缩的文件夹,找到名为“oracle.manageddataaccess.dll”的文件。 9. 将此文件复制到您的.NET项目的适当位置,以便您的应用程序可以引用它。 10. 确保将oracle.manageddataaccess.dll文件添加到您的项目的引用。 11. 在您的代码使用`using Oracle.ManagedDataAccess.Client;`命名空间引入所需的类和方法。 12. 确保您的应用程序的目标框架与ODAC版本兼容。 通过按照上述步骤操作,您可以成功下载并使用oracle.manageddataaccess.dll连接和操作Oracle数据库。请注意,根据您的特定需求和环境,可能需要进行一些额外的配置和设置。建议您参考Oracle官方文档和其他资源,以获得更详细的说明和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值