Oracle을 사용하여 Oracle에 연결합니다.관리되는 데이터 액세스
Oracle을 사용하고 있습니다.C#(.NET 4.0) 프로젝트의 ManagedDataAccess Nuget Package 버전 12.1.022.패키지는 자동으로 app.config 파일에 항목을 만듭니다.데이터베이스에 연결하려면 이 파일에서 데이터 원본 문자열을 어떻게 읽습니까?
시스템.구성.구성 관리자.앱 설정.Get("dataSource");
내게 도움이 되지 않습니다.
<?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>
일반적으로 표준 연결 문자열의 별칭을 참조합니다.
<connectionStrings>
<add name="MyConnection" connectionString="Data Source=MyDataSource;User Id=scott;Password=tiger;"/>
</connectionStrings>
그런 다음 표준 방법을 사용하여 문자열을 검색합니다.
ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
또한 데이터 원본 섹션의 별칭은 선택 사항입니다.연결 문자열에 직접 설명자를 포함할 수 있습니다.
<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>
tnsnames.or 파일의 별칭을 참조할 수도 있습니다.기본적으로 드라이버는 exe 폴더, TNS_ADMIN 환경 변수에 지정된 디렉토리 또는 TNS_ADMIN 구성 변수에서 tnsnames.ora를 찾습니다.
http://docs.oracle.com/cd/E48297_01/doc/win.121/e41125/featConfig.htm#autoId6 http://docs.oracle.com/cd/E48297_01/doc/win.121/e41125/featConfig.htm#autoId7
연결 문자열에서 이미 정의된 데이터 소스를 참조할 수 있습니다.
<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>
예를 들어, 이 특정한 경우:
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();
}
}
연결 문자열을 반환하는 별도의 클래스 파일을 만들 수 있습니다.
public class OracleDbConnection
{
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;
}
}
그러면 오라클 db에 액세스해야 하는 곳에서 이렇게 부를 수 있습니다.
var oracleConnection = OracleDbConnection.GetConnection();
oracleConnection.Open();
Formo 패키지를 사용하여 다음 방법을 만들었습니다.MyDataSource
에서 낚아채다.app.config
파일
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;
}
언급URL : https://stackoverflow.com/questions/31564288/connecting-to-oracle-using-oracle-manageddataaccess
'programing' 카테고리의 다른 글
파이썬에서 __init__의 값을 반환하는 방법은 무엇입니까? (0) | 2023.07.17 |
---|---|
Chrome에서 Selenium WebDriver Python 바인딩 실행 (0) | 2023.07.17 |
스프링 부츠 플라이웨이예외:데이터베이스에 연결할 수 없습니다.URL, 사용자 및 암호 구성 (0) | 2023.07.17 |
Excel VBA 매크로에서 UTC의 현재 날짜 시간을 가져오는 방법 (0) | 2023.07.17 |
numpy 배열을 통해 반복 (0) | 2023.07.17 |