문제

우리는 Informix 데이터베이스를 사용하고 있으며 ODBC를 사용하여 .NET에서 성공적으로 연결하고 있습니다. 우리가 사용하는 연결 문자열은 다음과 같습니다.

DRIVER={IBM INFORMIX ODBC RIVER};
UID=username; PWD=password;
DATABASE=our_database;
HOST=devsrv01;
SERVER=devsrv01_tcp;
SERVICE=ids9tcp2;
PROTOCOL=onsoctcp;
CLIENT_LOCALE=en_US.CP1252;
DB_LOCALE=en_US.819;

우리는 ODBC에서 변경하고 IBM의 SDK 및 라이브러리를 사용하고 싶습니다. 그들의 사이트에 설명되어 있습니다.

우리가 사용하는 코드는;

string ConnectionString = "Database=our_database; Server=172.22.0.0:1528; UID=username; Password=password; ";

try
{                               
    IfxConnection conn = new IfxConnection(ConnectionString);
    conn.Open();
}
catch (IfxException ex)
{}

conn.open ()은 예외를 던집니다.

오류 [08001] [IBM] SQL30081N 통신 오류가 감지되었습니다. 통신 프로토콜 사용 : "TCP/IP". 통신 API 사용 : "소켓". 오류가 감지 된 위치 : "172.22.0.0". 통신 기능 오류 감지 : "recv". 프로토콜 특정 오류 코드 : "", "","0 ". sqlstate = 08001

"아 하!" 당신은 말합니다. 그냥 넣어 ""PROTOCOL=onsoctcp;"하지만 이것은 IfxConnection(ConnectionString); 명령 던지기 ArgumentException. 연결 문자열에 유효하지 않은 경우 <field>=<value> 설정하면이 예외가 발생합니다. 내가 쓰레기를 넣으면 = 정크; 그것에 동일한 인수 except를 던져서 프로토콜 (또는 프로) 필드를 인식하지 못한다고 생각하게 만듭니다.

(FYI) 172.22.0.0은 DevSRV01의 IP이며 0.0을 끝내지 않습니다.

도움이 되었습니까?

해결책

나는 대답이 포함되어야한다는 것을 알았다.

Persist Security Info=True;Authentication=Server;

이유를 묻지 마세요. 나는 단지 그것을 작동시킨다.

모두를위한 +1 - 도와 주셔서 감사합니다.

다른 팁

확인 해봤 었니 http://www.connectionstrings.com/ ? 통찰력을 제공 할 수 있습니다.

.NET를 사용한다고 가정하면 Informix CSDK (DRDA ONE 아님) 및 ADO.NET를 연결하는 가장 쉬운 방법은 비주얼 스튜디오의 데이터 연결 목록에 데이터베이스를 추가하는 것입니다 (보기 -> 서버 익스플로러, 클릭하십시오. "데이터베이스에 연결"버튼을 한 다음 양식을 작성합니다 (CSDK와 함께 Visual Studio 확장을 설치했다고 가정).

그런 다음 프로젝트의 속성으로 이동하여 설정 탭으로 이동하여 '(Connection String)'유형의 새 설정을 추가하고 다음 값을 추가하십시오.

 Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser"

따라서 app.config에서는 다음과 같이 보입니다.

 <add name="MyApplication.Properties.Settings.MyConnectionString"
  connectionString="Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser"
  providerName="IBM.Data.Informix" />

또한 호스트 파일 (c : windows system32 drivers etc hosts) 및/또는 Informix 데이터베이스 연결 도구 'inetd32.exe'가 어딘가에 위치한 데이터베이스 및 서버가 구성되었는지 확인하십시오. .

또한 기울어 진다고 생각되면 서버 탐색기 창의 데이터베이스에서 Visual Studio의 열린 XSD 파일로 테이블을 드래그하여 구성 문자열을 자동으로 추가하고 유형 데이터 세트 및 IT를 제공하기 위해 모든 것을 설정하십시오. CRUD 레이어를 처리 할 것입니다 ... (VS가 어떤 이유로 든 최신 드라이버를 사용하여 Informix 스키마를 가져올 수 없기 때문에 많은 오류가 발생할 수 있습니다 ...)

어쨌든 연결 문자열을 사용할 수 있습니다.

IfxConnection myconnection = new IfxConnection(MyApplication.Properties.Settings.Default.MyConnectionString);

그만큼 IBM Informix .NET Povider Guide 4.10 매뉴얼은 프로토콜이 아닌 프로토콜 또는 프로를 사용합니다. 키워드는 케이스에 민감합니까? 표기법은 그럴 수 있음을 시사하지만 .NET에 대해 충분히 알지 못합니다. 프로토콜을 사용할 때 얻은 오류는 그것이 대소 문자를 사용하지 않을 수 있음을 시사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top