wake-up-neo.com

Verbindung zu Oracle mithilfe von Oracle.ManagedDataAccess herstellen

Ich verwende Oracle.ManagedDataAccess Nuget Package Version 12.1.022 in meinem C # (.NET 4.0) -Projekt. Das Paket erstellt automatisch Einträge in der Datei app.config. Wie kann ich die Datenquellenzeichenfolge aus dieser Datei lesen, um eine Verbindung zur Datenbank herstellen zu können?

System.Configuration.ConfigurationManager.AppSettings.Get ("dataSource");

arbeitet nicht für mich

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <configSections>
    <section name="Oracle.manageddataaccess.client"
             type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client"
           description="Oracle Data Provider for .NET, Managed Driver"
           type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <publisherPolicy apply="no" />
        <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
        <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  <Oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="MyDataSource"
                    descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=100.100.100.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myservice.com)))" />
      </dataSources>
    </version>
  </Oracle.manageddataaccess.client>
</configuration>
9
Khurram Majeed

Normalerweise verweisen Sie auf den Alias ​​in einer Standardverbindungszeichenfolge:

  <connectionStrings>
    <add name="MyConnection" connectionString="Data Source=MyDataSource;User Id=scott;Password=tiger;"/>
  </connectionStrings>

Dann würden Sie die Standardmethode zum Abrufen der Zeichenfolge verwenden:

ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

Beachten Sie auch, dass der Datenquellenabschnitt optional ist. Sie können den Deskriptor direkt in die Verbindungszeichenfolge einbetten:

  <connectionStrings>
    <add name="MyConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=100.100.100.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myservice.com)));User Id=scott;Password=tiger;"/>
  </connectionStrings>

Sie können auch auf Aliase in einer Datei tnsnames.ora verweisen. Standardmäßig sucht der Treiber im Ordner exe nach einer Datei tnsnames.ora, einem in einer Umgebungsvariablen TNS_ADMIN angegebenen Verzeichnis oder der Konfigurationsvariablen TNS_ADMIN:

http://docs.Oracle.com/cd/E48297_01/doc/win.121/e41125/featConfig.htm#autoId6http://docs.Oracle.com/cd/E48297_01/ doc/win.121/e41125/featConfig.htm # autoId7

12
b_levitt

Sie können auf die bereits definierte Datenquelle in der Verbindungszeichenfolge verweisen 

<Oracle.manageddataaccess.client>
    <version number="*">
        <dataSources>
            <dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=100.100.100.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myservice.com)))" />
        </dataSources>
    </version>
</Oracle.manageddataaccess.client>

zum Beispiel in diesem speziellen Fall:

public class OracleDBManager
{
    private OracleConnection _con;
    private const string connectionString = "User Id={0};Password={1};Data Source=MyDataSource;";
    private const string OracleDBUser = "exampleUser";
    private const string OracleDBPassword = "examplePassword";

    public OracleDBManager()
    {
        InitializeDBConnection();
    }

    ~OracleDBManager()
    {
        if (_con != null)
        {
            _con.Close();
            _con.Dispose();
            _con = null;
        }
    }

    private void InitializeDBConnection()
    {
            _con = new OracleConnection();
            _con.ConnectionString = string.Format(connectionString, OracleDBUser, OracleDBPassword);
            _con.Open();
    }
}
5
Sergio Faundez

Mit dem Paket Formo erstellte ich die folgende Methode, um die MyDataSource-Zeichenfolge aus der app.config-Datei abzurufen

using Configuration = Formo.Configuration;
.......
/// <summary>
/// Gets the data source from app.config file
/// </summary>
/// <returns></returns>
public string GetMyDataSource()
{
    dynamic config = new Configuration();
    return config.MyDataSource;
}
0
Khurram Majeed

Sie können eine separate Klassendatei erstellen, die den Verbindungsstring wie folgt zurückgibt:

public static OracleConnection GetConnection()
{
  const string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=127.0.0.1)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=PROD))); User Id=userId;Password=password;";
  var connection=new OracleConnection(connectionString);
  return connection;
}

Dann können Sie es so nennen, wo Sie Zugriff auf Oracle Db

var oracleConnection = OracleDbConnection.GetConnection();
oracon.Open();
0
bax 1188