С# ADO.Net для db2 iseries - соединение недействительно

У меня возникли проблемы с подключением к базе данных DB2 iSeries с помощью программы С# ADO.Net.

Я могу подключиться из окна Windows к DB2/iSeries с помощью утилиты ClientAccess "Передача данных из iSeries" с этими настройками:

IBM i name: 192.168.0.1
User: VCT130
Passwd: pass
File name: CHGDG#VL/AREA(AREA)

и он извлекает 23 записи.

Я пытаюсь получить доступ к тем же данным из простой программы С#, приведенной ниже:

using IBM.Data.DB2.iSeries;
string conStr= "DataSource=192.168.0.1;UserID=VCT130;Password=pass;Naming=System;LibraryList=QIWS,CHGDG#VL,CHNNL#VL,CHVAT#VL;DefaultCollection=QIWS;" ;
string sql= "SELECT * from CHGDG#VL/Area;" ; // ALSO TRIED ...from CHGDG#VL/Area(AREA);
iDB2Connection conn = new iDB2Connection(conStr);
iDB2Command cmd = new iDB2Command(sql, conn);
iDB2DataReader rdr = cmd.ExecuteReader();

Объекты conn и cmd создаются ОК, но вызов ExecuteReader() не выполняется:

Unhandled Exception: System.InvalidOperationException: The operation cannot complete because the connection is not valid.
 at IBM.Data.DB2.iSeries.iDB2Command.verifyConnection()
 at IBM.Data.DB2.iSeries.iDB2Command.ExecuteDbDataReader(CommandBehavior behavior)
 at IBM.Data.DB2.iSeries.iDB2Command.ExecuteReader()
 at test04.DBDB2.read() in 
 c:\Users\mikeb\projs\ClassLibrary1\ClassLibrary1\DBDB2.cs:line 27

Моя строка 27 - вызов cmd.ExecuteReader()

Любые идеи, пожалуйста?

19 ноября Дальнейшие мысли:

[Пожалуйста, извините любой неуклюжий этикет, я новый плакат здесь]

  • Я что-то упускаю? Я думаю, что есть всего 2 вещи здесь неправильно:
    1. Мой код. Нет, слишком просто и подтверждено сообщением @MikeWills
    2. Моя строка подключения
    3. Или может быть что-то еще?

- re IBM.Data.DB2.iSeries.iDB2Command.verifyConnection()

Кто-то здесь имеет доступ к коду, чтобы сказать, что делает этот метод, и что может привести к его провалу?

2 ответа

Решаемые. Мне не хватало следующего:

  • нужно добавить conn.Open() после conn = new....
  • Добавить CheckConnectionOnOpen = true; к строке подключения
  • Удалить/из строки запроса


Посмотрите, поможет ли вам этот образец. Я написал библиотеку, чтобы упростить подключение к серверу IBM, это очень старая версия этой библиотеки. Мне нужно снова открыть новую версию.

Обновление: моя строка подключения: DataSource=127.0.0.1;DefaultCollection=LIBRARY;Naming=sql;UserID=USER;Password=PASSWORD;

licensed under cc by-sa 3.0 with attribution.