Вопрос

Мы используем базу данных 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 и использовать SDK и библиотеки IBM в качестве изложен на их сайте .

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

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 Обнаружена ошибка связи. Используемый протокол связи: & Quot; TCP / IP & Quot ;. Используемый интерфейс связи: & Quot; SOCKETS & Quot ;. Место, где обнаружена ошибка: & Quot; 172.22.0.0 & Quot ;. Функция связи, обнаружившая ошибку: & Quot; recv & Quot ;. Специфичные для протокола коды ошибок: & Quot; & Quot ;, & Quot; & Quot ;, & Quot; 0 & Quot ;. SQLSTATE = 08001

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

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

Это было полезно?

Решение

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

Persist Security Info=True;Authentication=Server;

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top