2011-10-20 3 views
1

내 PC에 Oracle 클라이언트 버전 10g를 설치했습니다 (레지스트리 ORACLE_BASE-D : \ oracle \ product \ 10.2.0). 아래 참조를 추가했습니다. System.Data.OracleClient.System.Data.OracleClient에는 Oracle 클라이언트 소프트웨어 버전 8.1.7 이상이 필요합니다.

위에서 언급 한 오류가 발생합니다. 다음은 코드 스 니펫입니다.

public static OracleConnection getConnection() 
    { 

     try 
     { 
      dataSource = new SqlDataSource(); 
      dataSource.ConnectionString = System.Configuration.ConfigurationManager.AppSettings.Get("conn"); 
      OracleConnection connection = new OracleConnection(); 
      if (dataSource == null) 
      { 
       // Error during initialization of InitialContext or Datasource 
       throw new Exception("###### Fatal Exception ###### - DataSource is not initialized.Pls check the stdout/logs."); 
      } 
      else 
      { 
       connection.ConnectionString = dataSource.ConnectionString; 
       connection.Open(); 
      } 
      return connection;    
     }catch (Exception ex) 
     { 
      throw ex; 
     } 

    } 

관심 분야와 Iam이 누락 된 부분을 알려주십시오. 오라클과 Asp.Net의 조합에 대해 새로운 내용입니다.

+0

시스템에서 정상적으로 데이터베이스에 연결할 수 있습니까? 오라클 홈으로 연결되는 환경 변수'Path'에서 찾아 볼 수 있습니까? – V4Vendetta

+0

Toad를 통해 데이터베이스에 연결할 수 있습니다. 또한 Oracle 용 경로가 환경 변수에 존재합니다. –

+0

오라클의 폴더와 하위 폴더에'ASPNET'에 권한을 부여 할 수 있습니까? 문제가 될 수도 있습니다. – V4Vendetta

답변

2

Microsoft 오라클 클라이언트를 사용하고있는 것 같습니다. 훨씬 더 신뢰할 수있는 ODP.net 드라이버를 사용하는 것이 좋습니다.

http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

ODP.net 드라이버를 설치 프로젝트에 Oracle.DataAccess에 대한 참조를 추가 (I은? 마이크로 소프트 클라이언트는 사용되지 믿고), 당신은 갈 수 있습니다! (내 previous post에서) 예제 코드 :

using System; 
using System.Data; 
using Oracle.DataAccess.Client; 

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     TestOracle(); 
    } 

    private static void TestOracle() 
    { 
     string connString = 
      "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" + 
      "(HOST=servername)(PORT=‌​1521)))" + 
      "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+ 
      "User Id=username;Password=********;"; 
     using (OracleConnection conn = new OracleConnection(connString)) 
     { 
      string sqlSelect = "SELECT * FROM TEST_TABLE"; 
      using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn)) 
      { 
       var table = new DataTable(); 
       da.Fill(table); 

       if (table.Rows.Count > 1) 
        Console.WriteLine("Successfully read oracle."); 
      } 
     } 
    } 
} 

편집 : 나는 또한 이전 오류 "Oracle 클라이언트 소프트웨어 버전 8.1.7 이상이 필요합니다"가 발생했습니다. 내 컴퓨터에 Oracle 클라이언트를 설치하여 발생했습니다. Microsoft 드라이버를 사용하도록 설정 한 경우, 컴퓨터에서 Oracle Client를 (반어 적으로) 제거 할 수 있습니다.

+0

비슷한 문제가 있습니다. 뿐만 아니라 @Matt 제안은 과거에도 나를 위해 일했습니다. – gcoleman0828

1

는 "내 PC에 오라클 클라이언트 버전 10g를 설치 한" 당신은 마이크로 소프트 오라클 클라이언트 및 시스템의 유형을 사용하는

"System.Data.OracleClient에 오라클 클라이언트 소프트웨어 버전 8.1.7 이상이 필요합니다." Data.OracleClient는 .NET 프레임 워크 4.0에서 감가 상각하고 컴퓨터에 여전히 이전의 오라클 클라이언트 (8 이하)가있는 경우 .NET http://msdn.microsoft.com/en-us/library/77d8yct7.aspx

확인의 향후 버전에서 를 제거됩니다. PATH 변수는 여전히 이전 Oracle 클라이언트 bin 디렉토리를 가리 킵니다. Windows 명령 줄에서 'tnsping'을 실행하고 버전 10이 표시되지 않으면 이전 버전으로 기본값이 유지됩니다.

최신 Oracle 클라이언트를 설치하기 전에 먼저 모든 기존 Oracle 클라이언트를 설치 제거하는 것이 좋습니다. 그런 다음 Oracle 데이터베이스 서버 및 사용자 조직에서 지원하는 가장 최신 버전의 Oracle 클라이언트를 설치하십시오.

당신은 .NET 프레임 워크 4.0을 사용하는 경우 오라클 클라이언트 11g R2를 시도하고 .NET http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

을위한 오라클 데이터 공급자를 설치 할 수 있습니다

높은, 당신은에 Oracle.DataAccess에 대한 참조를 추가 할 때 Visual Studio 프로젝트 이 dll이 4.xxx인지 확인하십시오. 그렇지 않으면 클라이언트 위치로 이동하여 4.xxx dll을 선택하십시오.

1

클라이언트 컴퓨터에 Oracle 클라이언트 소프트웨어를 설치해야 연결이 가능합니다. 오라클 데이터베이스. 데이터베이스 사용자 SQL * Net은 Oracle 데이터베이스의 Oracle 연결 계층입니다. System.Data.OracleClient dll은이 기능을 제공하지 않습니다.

당신은 당신의 코드를 컴파일을 할 때 DLL에 대한 참조를 포함해야 Oracle client software

다운로드. 당신은 C# 프로그램을 컴파일하는 경우 예를 들어, 명령 줄은 다음을 포함한다 :

을 같은 같은 : - csc /r:System.Data.OracleClient.dll

이 경우 기본적으로 MSDN

2

, 의 System.Data.OracleClient가 액세스해야 .Net의 일부가 아닌 oracle dll의 일부. 솔루션 :

  • 오라클 클라이언트를 설치하고 창 또는
  • 복사 oraociicus10.dll (기본 - 라이트 버전) 또는 aociei10.dll (기본 버전)의 경로 환경 가변적이고, 에 오라클 클라이언트 빈 위치를 추가 oci.dll, orannzsbb10.dll 및 oraocci10.dll을 oracle 클라이언트 설치 폴더에서 응용 프로그램의 bin 폴더로 복사하여 응용 프로그램이 필요한 dll을 찾을 수 있도록하십시오.
관련 문제