2017-12-26 2 views
0

ODBC 드라이버를 통해 Oracle 데이터베이스에서 최상위 레코드를 가진 테이블을 얻으려고했습니다. 이를 위해 아래 코드를 사용하고 있습니다.쿼리에서 데이터베이스 이름을 사용하지 않고 데이터 테이블을 얻는 방법

OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder(); 
     builder.ConnectionString = "Driver={Oracle in OraClient11g_home1};Dbq=localhost;Uid=system;Pwd=abc;Database = NORTHWIND"; 
OdbcConnection con = new OdbcConnection(); 
     con.ConnectionString = builder.ConnectionString; 
     con.Open(); 
     string query = "SELECT \"NORTHWIND\".\"ORDERS\".\"ID\" AS \"My field id\" FROM \"NORTHWIND\".\"ORDERS\" WHERE ROWNUM = 1"; 
     OdbcCommand cmd = new OdbcCommand(query,con); 
     var k = cmd.ExecuteReader(); 
     var datatable = new DataTable(); 
     datatable.Load(k); 
     con.Close(); 

위의 코드는 저에게 잘 작동합니다. 데이터베이스 이름없이 쿼리를 실행해야합니다. 여기서 데이터베이스 이름은 NORTHWIND입니다. 하지만 데이터베이스 이름없이 쿼리를 사용하는 경우 "SELECT \"ORDERS\".\"ID\" AS \"My field id\" FROM \"ORDERS\" WHERE ROWNUM = 1" 예외가 발생했습니다. "테이블 또는 뷰가 없습니다."

내 connectionstring에 데이터베이스 이름이 있어도이 예외가 있습니다.

아무도 내가 데이터베이스 이름없이 쿼리를 사용할 때 왜 위의 예외가 발생했는지 설명 할 수 있습니까?

+0

내가 쿼리 사장님을 실행할 이거. query = "SELECT ORDERS.ID AS 내 필드 ID FROM ORDERS WHERE ROWNUM = 1"; –

답변

0

builder.ConnectionString = "Driver={Oracle in OraClient11g_home1};Dbq=localhost;Uid=system;Pwd=abc;Data Source = NORTHWIND;"; 

Referrences-를 this-하는 연결 문자열을 변경

+0

답장을 보내 주셔서 감사합니다. 언급 한대로 연결 문자열을 변경 한 후 내 문제가 해결되지 않습니다. 다른 솔루션을 제안 해 주시겠습니까? –

+0

@KavithaM 수정 된 답변을 확인하십시오. 또한 마지막 참조 링크를 확인하십시오. –

관련 문제