programing

개발 환경에서 윈도우즈 7 x64의 C#에서 오라클 데이터베이스에 연결하는 방법

bestprogram 2023. 9. 4. 20:29

개발 환경에서 윈도우즈 7 x64의 C#에서 오라클 데이터베이스에 연결하는 방법

Windows 7x64에서 Oracle 데이터베이스에 연결하는 데 문제가 있습니다.

환경은 다음과 같습니다.

  • 윈도우 7x64
  • 비주얼 스튜디오 2012
  • Oracle 10g(32비트 클라이언트 포함)
  • WinForms

모든 프로젝트의 대상 CPU를 명시적으로 x86 CPU로 만들었습니다(Any 또는 x86과는 반대).

DbProviderFactory를 사용하여 연결하고 있습니다.GetFactory

내 app.config의 내 ConnectionString 항목은 다음과 같습니다.

<add name="MYORACLE"
connectionString = "User ID=MYPASSWORD;Password=MYPASSWORd;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MYHOST)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MYSERVICE)));"
providerName="System.Data.OracleClient" />

(다양한 스타일의 연결 스트링으로 시도해보았지만 성공하지 못했습니다)

응용프로그램을 컴파일할 때 디버그 폴더에서 실행 파일을 실행하면 연결이 잘 됩니다.그러나 Visual Studio에서 실행하려고 하면 연결을 열 때 실패합니다.

ORA-06413: Connection not open.\n

다음은 이를 어떻게 부르는지에 대한 예입니다.

[TestMethod]
public void ConnectToOracle_Success()
{
    var connectionStringSettings = ConnectionBuilder.GetConnectionStringSetting(OracleConnectionName);
    var providerFactory = ConnectionBuilder.GetProviderFactory(connectionStringSettings);
    ConnectionBuilder.ValidateConnectionString(connectionStringSettings);
    using (var connection = providerFactory.CreateConnection())
    {
        Assert.IsNotNull(connection);
        connection.ConnectionString = connectionStringSettings.ConnectionString;
        try
        {
             connection.Open();
        }
        catch (Exception e)
        {
            Assert.Equals(e.Message, "");
        }
    }
}

Windows 7x64의 Visual Basic 6과 유사한 것을 보았는데 Oracle은 설치된 경로(즉, "프로그램(x86)"이라는 괄호)를 좋아하지 않습니다.이와 같은 것입니까, 아니면 Oracle이 행동하도록 설득할 수 있는 다른 방법이 있습니까?

OCI 클라이언트 버전 문제일 수 있습니다.https://community.oracle.com/message/11103466 을 참조하십시오.

저는 이것과 관련하여 많은 문제를 보았습니다.대부분의 경우 ODP와 관련이 있습니다.NET 어셈블리(예: Oracle).DataAccess)는 운영 체제 아키텍처와는 다른 버전입니다(여기서는 비트).

이에 대해 몇 가지 방법을 사용할 수 있습니다.

  1. 32비트 및 64비트 ODP를 모두 설치합니다.NET 클라이언트 도구(해당 아키텍처의 OCI 포함), oracle.com 에서 무료로 다운로드할 수 있습니다.

  2. 32비트와 같은 특정 프로세서 아키텍처를 위한 애플리케이션을 구축합니다.

  3. OCI에 의존하지 않는 타사 Oracle 클라이언트 커넥터를 사용합니다(이로 인해 문제가 발생함).대부분의 경우 비싼 솔루션이기 때문에 추천하지 않을 것입니다.

오, 오라클 제공자의 무서운 괄호.가장 간단한 방법은 문제가 해결된 최신 버전의 클라이언트를 사용하는 것입니다.Oracle 10g 데이터베이스를 사용하면 최대 12.1.x 클라이언트(여기서 사용 가능: 64비트 Oracle Data Access Components)를 안전하게 사용할 수 있습니다.

64비트 OS에서 제가 사용한 또 다른 트릭이 있습니다. 먼저 32비트 버전의 클라이언트를 설치하고 그 위에 64비트 버전을 설치하는 것입니다.그렇게 하면 Office 또는 이전 VS Dev 웹 서버와 같은 일부 앱이 여전히 작동합니다.

언급URL : https://stackoverflow.com/questions/20764912/how-can-i-connect-to-an-oracle-database-from-c-sharp-on-windows-7-x64-in-my-deve