2014-07-18 2 views
0

새로 추가 된 테이블이나 새로 추가 된 데이터가있는 이전 테이블에 대해 SQL Developer에서 간단한 select 쿼리를 실행하면 결과가 표시됩니다. 그러나 .NET 4.0에서 가장 최근의 Oracle Data Access Client를 사용하여 .NET/C#에서 동일한 쿼리를 실행하면 결과가 0이됩니다.결과를 반환하지만 SQL DEVELOPER가 결과를 반환하는 .NET ODAC 쿼리

연결 문자열이 올바른지, 동일한 DB에 연결되어 있는지, 간단한 "select * from table"쿼리를 사용하여 테스트했는지 확인했습니다. 이전의 데이터를 쿼리하는 것과 똑같은 .NET 코드를 사용하면 ... 잘 작동합니다. 나는 이것이 일종의 버그라고 결론을 내릴 수 있습니다. 아니면 오라클 전문가 인 사람이 이런 일이 발생할 수있는 방법을 알고있을 것입니다. 나는 DB가 복잡한 기계라는 것을 알고 있습니다. 따라서 어떻게 이런 일이 발생할 수 있는지에 대한 논리적 인 설명이 가능하고 어떻게 고칠 수 있는지 기대하고 있습니다.

저는 Oracle 초보자입니다.하지만 저는 베테랑 프로그래머이자 문제 해결사입니다. 이 하나는 정말로 저를 곤란하게합니다.

내 첫 번째 질문입니다. 친절하게 ... 감사합니다.

"... 테이블이 존재하지 않습니다 ..."라는 오류를 반환하는 샘플 코드는 다음과 같습니다. 그러나 테이블 DOES가 존재하며 쿼리는 SQL DEV에서 정상적으로 작동합니다.

 String prod_connstr = "Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.0.0.17) (PORT = 2621)) " + 
     "(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XXXXX)));User Id=XXXXX;Password=XXXXX"; 

     String sqlStr = "select * from z_test"; 
     OracleConnection conn = new OracleConnection(prod_connstr); 

     try 
     { 
      conn.Open(); 
      OracleCommand cmd = new OracleCommand(sqlStr, conn); 
      OracleDataReader dr = cmd.ExecuteReader(); 
      MessageBox.Show(dr.HasRows.ToString()); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Error"); 
     } 
     finally 
     { 

      conn.Dispose(); 
     } 
+0

코드를 게시하시기 바랍니다 (그것에 대해 잊어). – schglurps

답변

2

나는 당신이하지 알고 여기서 "... 테이블 ... 존재하지 않는"본 때마다, 당신이 (연결 문자열)로 연결하는 사용자에게 부여 선택하지 않는 의미 그것. 이제 SQL 개발자와 연결하고 동일한 스키마를 가진 연결 문자열을 사용하면 나를 괴롭 히게됩니다.

편집 : 당신의 데시벨은 당신이 스키 마을 사용할 필요가 테이블에 대한 공공 동의어이없는 경우 오구 즈 세제 르가 지적

+1

당신은 그것을 못 박았습니다. 다른 모든 쿼리에서 작동했기 때문에 올바른 사용자 ID를 가지고 있다고 확신했습니다. 그러나 면밀한 조사에서 잘못된 사용자 ID가 있음이 판명되었습니다. 그것을 바꿨다. .. 그리고 voila! 그것은 작동합니다! 이봐,이게 맘에 든다. –

+0

도와 줘서 기쁩니다! :) – bowlturner

+0

같은 문제로 .... 하루 종일 곤란한. 연결 자격 증명은 정확히 동일합니다 ....하지만이 게시물은 사용자 ANONYMOUS에게 권한 액세스를 추가하도록 트리거했습니다. 그랬어. 왜 그런지 잘 모르겠지만 ... 추신. 내 테이블은 오라클 데이터 모델러 (Oracle Data Modeler)에서 생성되었으므로 아마도 수입은 짐승의 장내 깊숙한 곳에있는 "주인"에게 돌아 갔을 것입니다. – rr789

관련 문제