Строка подключения для Informix для .NET - PullRequest
2 голосов
/ 04 марта 2009

Мы используем базу данных Informix и успешно подключаемся к ней из .NET, используя ODBC. Используемая нами строка подключения:

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 и библиотеки, как указано на их сайте 1005 *.

Код, который мы используем:

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 связи: "SOCKETS". Место, где была обнаружена ошибка: "172.22.0.0". Функция связи, обнаружившая ошибку: «recv». Коды ошибок протокола: «», «», «0». SQLSTATE = 08001

"Ага!" ты говоришь. Просто введите "PROTOCOL=onsoctcp;", но это заставит команду IfxConnection(ConnectionString); бросить ArgumentException. Если строка подключения содержит недопустимую настройку <field>=<value>, она выдает это исключение. Если я положу в мусор = мусор; в него добавляется то же ArgumentException, которое заставляет меня думать, что оно не распознает поле протокола (или PRO).

(FYI) 172.22.0.0 - это IP для devsrv01 и не заканчивается 0.0.

Ответы [ 4 ]

3 голосов
/ 05 марта 2009

Я даже узнал, что ответ должен был быть;

Persist Security Info=True;Authentication=Server;

Не спрашивайте меня, почему. Я просто заставляю это работать.

+ 1 для всех - спасибо за вашу помощь.

1 голос
/ 04 марта 2009

Руководство IBM Informix .NET Povider 4.10 использует протокол или PRO, а не PROTOCOL. Ключевые слова чувствительны к регистру? Нотация предполагает, что это может быть, но я не знаю достаточно о .NET, чтобы быть уверенным. И ошибка, которую вы получаете, когда используете PROTOCOL, предполагает, что он может быть чувствителен к регистру.

1 голос
/ 05 марта 2009

Предполагая, что вы хотите использовать .NET, Informix CSDK (не DRDA) и ADO.NET, самый простой способ подключения - использовать добавление базы данных в список соединений данных Visual Studio («Просмотр» -> «Проводник сервера»). затем нажмите кнопку «Подключиться к базе данных», а затем просто заполните форму (предполагается, что вы установили расширения Visual Studio с помощью CSDK ...)).

Затем перейдите в свойства проекта, перейдите на вкладку настроек, добавьте новую настройку с типом «(Строка подключения)» и введите значение:

 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" />

Также убедитесь, что база данных и сервер настроены в файле hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts) и / или с помощью инструмента подключения к базе данных Informix inetd32.exe, расположенного в меню «Пуск». где-то ...

Также, если вы чувствуете склонность, вы можете перетащить таблицы и тому подобное из базы данных в окне обозревателя серверов в открытый XSD-файл в Visual Studio, чтобы он автоматически добавлял строку подключения в конфигурацию и настраивал все, чтобы вы могли набрать набор данных, и он будет обрабатывать слой CRUD для вас ... (Хотя вы можете получить кучу ошибок, потому что VS не может получить схему Informix с использованием последних драйверов по некоторым причинам ...)

В любом случае, вы можете использовать строку подключения, например:

IfxConnection myconnection = new IfxConnection(MyApplication.Properties.Settings.Default.MyConnectionString);
1 голос
/ 04 марта 2009

Вы проверяли http://www.connectionstrings.com/? Это может предложить некоторое понимание.

...