zoukankan      html  css  js  c++  java
  • C#基础知识回顾:2.使用DbProviderFactory实现多数据库访问

      ADO.Net 2.0中,在System.Data.Common中引入了一系列抽象基类,使得开发人员能够在不依赖具体数据库操作的情况下进行编写数据访问代码,它们分别是DbConnection、DbCommand和DBDataAdapter,同时,.Net Framework也提供这些基类的实现类,用来处理具体的数据库操作,比如

    • MSSQLserver对应的实现类:System.Data.SqlClient.SqlConnection、System.Data.SqlClient.SqlCommand、System.Data.SqlClient.SqlDataAdapter。
    • Oracle对应的实现类:System.Data.OracleClient.OracleConnection、System.Data.OracleClient.OracleCommand、System.Data.OracleClient.OracleDataAdapter。

      要使用这些抽象基类来实现数据库操作,主要依赖于DbProviderFactories类,它是数据库操作的工厂类,根据传递的DataProviderName返回具体的数据库操作实现DbProviderFactory,它包括一系列方法用于访问数据库,获取的数据是DataTable的形式。

      比如,MSSQLserver对应的实现类:System.Data.SqlClient.SqlClientFactory,Oracle对应的实现类:System.Data.OracleClient.OracleClientFactory。

      使用数据库对应的实现类,就可以调用其方法访问到数据,其中获取到的数据都是以DataTable的形式。

    使用此方式进行数据库,还需要在配置文件中进行以下调整:

    1.ConnnectionString

    ConnectionStringSettings包括三个属性:ConnectionString、Name、ProviderName。这三个属性都需要进行配置,代码中需要根据ProviderName获取到具体的数据库操作实现类:

    public static System.Data.Common.DbProviderFactory GetFactory (string providerInvariantName);

    2.system.Data下添加DbProviderFactories配置节

     1 <system.data> 
     2   <DbProviderFactories> 
     3     <add name="SqlClient Data Provider" 
     4      invariant="System.Data.SqlClient"  
     5      description=".Net Framework Data Provider for SqlServer"  
     6      type="System.Data.SqlClient.SqlClientFactory, System.Data,  
     7      Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     8 
     9     /> 
    10   </DbProviderFactories>
    11 </system.data>

    为了保证不与系统的配置发生冲突,建议在DbProviderFactories配置节的顶部添加以下配置

    <remove invariant=" System.Data.SqlClient "/>。

    系统配置路径:

    C:WindowsMicrosoft.NETFramework64v4.0.30319Configmachine.config

    其他数据库的配置信息如下:

    1     <DbProviderFactories>
    2       <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    3       <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    4       <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    5       <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    6       <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    7       <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.58.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
    8       <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Framework Data Provider for PostgreSQL Database" type="Npgsql.NpgsqlFactory, Npgsql, Version=1.98.4.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
    9     </DbProviderFactories>
  • 相关阅读:
    html 克隆页面上的内容,实现增删执行步骤的功能
    form表单提交数据后接收后端返回的数据
    基于linux Asciinema开发webssh的录像回放功能说明及内容记录
    django 后端JsonResponse返回json数据给前端完美接收并将数据写入前端页面做展示
    高清视频压缩工具ffmpeg
    vue.js 入门
    鼠标点击选中着色,包含这个标签下的所有子标签
    回车即提交from表单数据
    button点击按钮触发提交from表单数据
    完美定义点击按钮触发函数提交数据【ajax】
  • 原文地址:https://www.cnblogs.com/DreamOfLife/p/9100619.html
Copyright © 2011-2022 走看看