.NET의 Informix 용 연결 문자열
-
03-07-2019 - |
문제
우리는 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에 대해 충분히 알지 못합니다. 프로토콜을 사용할 때 얻은 오류는 그것이 대소 문자를 사용하지 않을 수 있음을 시사합니다.