c # для AS400/JD Edwards - запустить программу - имя источника данных не найдено и драйвер по умолчанию не указан

ОБНОВЛЕНИЕ: приведенный ниже пример кода работает. Я изменил строку подключения. В этом была проблема. Альтернативное (не ADO) решение см. по ссылке Майка Уиллса в комментариях.

У меня есть класс С#, который (если я когда-нибудь заработаю) запускает программу, написанную в коде RPG на AS/400 — JD Edwards. Я почти ничего не знаю об AS/400 и/или JD Edwards.

У меня есть другие классы в моем (внутрисетевом) веб-приложении, которые подключаются к JD Edwards, выполняют SQL-запросы и устанавливают/получают данные. Все они используют dll IBM.Data.DB2.iSeries и прекрасно работают.

Для этого я написал аналогичный класс, используя вышеупомянутую dll, но он не работал. Я даже читал где-то в Интернете, что вы не можете запустить программу, используя эту dll. Я нашел это немного подозрительным, но по предложению моего коллеги JD Edwards я выбросил класс и переписал его, используя adodb dll. Нет необходимости возвращать данные из этого запуска программы. Я просто хочу, чтобы программа работала.

Вот фиктивная версия класса:

    private void runJDEProgram() {
        ADODB.Connection cn = new ADODB.Connection();

        cn.ConnectionString = "Provider=ABABAB;Data Source=111.111.111";



        ADODB.Command cmdDetail = new ADODB.Command();
        cn.Open(); //has to be open before setting an active connection.
        cmdDetail.ActiveConnection=cn;


        cmdDetail.CommandType = ADODB.CommandTypeEnum.adCmdText;

        cmdDetail.CommandText = "{{CALL BLAH.BLAH(?,?)}}";


        cmdDetail.Prepared = true;

        cmdDetail.Parameters.Append(cmdDetail.CreateParameter("P1", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 10, "BLAH123"));
        cmdDetail.Parameters.Append(cmdDetail.CreateParameter("P2", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 10, "BLAH456"));

        object dummy = Type.Missing; //otherwise, we couldn't get past this.

        cmdDetail.Execute(out dummy, ref dummy, 0);

        cn.Close();
    }

Вот ошибка, которую я получаю при запуске:

{"[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"}

Где я лажаю? Спасибо!

РЕДАКТИРОВАТЬ: Строка подключения работает при запросе AS/400 для получения/установки данных. Нужно ли его модифицировать для такой операции или для использования с ADO?


person shubniggurath    schedule 04.03.2013    source источник
comment
Какую версию клиентского доступа вы используете?   -  person Mike Wills    schedule 04.03.2013
comment
Как мне это узнать? Это что-то на стороне Джей Ди Эдвардса?   -  person shubniggurath    schedule 04.03.2013
comment
Это будет что-то установленное на вашем компьютере. Я не знаю JDE. Но поскольку я думаю об этом больше, вам может не понадобиться установленный Client Access. Но работать с данными НАМНОГО проще.   -  person Mike Wills    schedule 04.03.2013
comment
Это программа или dll или... что? Извиняюсь. Должна ли такая вещь существовать и на веб-сервере? Спасибо за вашу помощь.   -  person shubniggurath    schedule 04.03.2013
comment
Хорошо, я нашел это: publib.boulder. ibm.com/iseries/v5r1/ic2924/index.htm?info/ Выглядит интересно, но не думаю, что мне это поможет в решении этой проблемы. Спасибо, однако, за предложение.   -  person shubniggurath    schedule 04.03.2013
comment
Более поздние версии 5.4, 6.1 и 7.1 имеют драйвер .NET ADO. Это то, что я использую для всех подключений. У меня есть проект Github, написанный для упрощения работы с данными IBM i. . Хотя код немного устарел, он хорошо работает с этим драйвером.   -  person Mike Wills    schedule 04.03.2013
comment
Видимо, мы уже используем это. Электронная таблица Excel может использовать смутно похожий код для запуска программы JDE (конечно, код в vb). Вышеупомянутый класс - моя попытка перевода.   -  person shubniggurath    schedule 04.03.2013
comment
Посмотрите, что я делаю в мой интерфейс. Я не использую метод ADO. Посмотрим, поможет ли это тебе.   -  person Mike Wills    schedule 04.03.2013
comment
Большое спасибо за вашу помощь @MikeWills - проблема была в строке подключения. Пример выше теперь работает. Спасибо еще раз!   -  person shubniggurath    schedule 05.03.2013


Ответы (1)


По какой-то причине строка подключения для этого должна быть другой. Я не использую ту же строку подключения для других классов, которые просто выполняют запросы. Приведенная выше строка подключения работала нормально (конечно, с соответствующими значениями).

Он запросит пароль, но ребята из JDE хотели этого.

person shubniggurath    schedule 05.03.2013