Соединение idb2 не разрешено с С#

у меня небольшая проблема с подключением к AS400. Я использую С#. Когда я хочу выполнить оператор SQL для вставки в таблицу, он выдает это сообщение.

SystemInvalidOperationException : This operation cannot be successful because the connection is not allowed at IBM.Data.DB2.iSeries.iDB2Command.verifyConnection(); at IBM.Data.DB2.iSeries.iDB2Command.ExecuteNonQuery();

вот мое определение строки подключения

    public static string userID;
    public static string passwd;
    public static string system;
    public string query;
    public iDB2Connection conn = new iDB2Connection("DataSource = " + system + ";UserID = " + userID + ";Password = " + passwd + ";DataCompression=true;");

и код, содержащий оператор вставки

       public  void insert(Programs prog, int nbfiche)
        {
        //conn.Open();
        try
        {


            string sqlQuery = "INSERT INTO DIIAB.FICDET(MTPRO,MTFICH,MTPGM,MTNSRC,MTLSRC,MTTYP,MTOBJT) VALUES('" + Progiciel + "','" + nbfiche + "','" + prog.program_name +
                "','" + prog.source_program + "','" + LIB + "','" + prog.element_type + "','" + prog.program_type + "')";


            iDB2Command iDB2Command = conn.CreateCommand();
            iDB2Command.CommandText = sqlQuery;
            iDB2Command.ExecuteNonQuery();
            sqlQuery = "select MTFICH from DIIAB.FICDET where MTFICH='" + nbfiche + "'";
            iDB2Command command = conn.CreateCommand();
            command.CommandText = sqlQuery;
            iDB2DataReader reader = command.ExecuteReader();
            while (reader.Read())
            {

                if (reader[0].ToString().Contains(nbfiche.ToString()))
                {
                    System.Windows.MessageBox.Show("Un programme à été rajouté à la fiche.");
                }



            }

            System.Windows.MessageBox.Show("Les programmes ont été rajouté à la fiche", "Information");


        }
        catch (Exception e)
        {
            System.Windows.MessageBox.Show(e.ToString());
        }

    }

и код, который вызывает метод вставки с параметрами

         edit.userID = userID;
                            edit.passwd = passwd;
                            edit.system = system;
                            edit editeur = new edit();

                            editeur.nbfiche = Convert.ToInt32(daoficnbr.fICNBR.nb_fiche);
                            editeur.fiche_status = Statuss.Text;
                            editeur.Progiciel = PRO.Text;
                            editeur.getpgm(arcad.lib,daoficnbr.fICNBR.nb_fiche);
                            foreach (Programs p in editeur.content)
                            {
                                editeur.insert(p, editeur.nbfiche);
                            }

Не могли бы мне помочь, пожалуйста, уже 2 дня я застрял на этом

Завершите строку подключения с помощью ; точка с запятой. Кроме того, вам нужно conn.Open() ;

mao 28.05.2019 14:17

я сделал и проверил это все еще та же ошибка

aymannblal 28.05.2019 14:24

Вы закомментировали conn.Open() , но он должен быть запущен до того, как команда сможет завершиться. Вы также можете добавить к строке подключения CheckConnectionOnOpen=true;

mao 28.05.2019 14:28

да, я только что видел это, и все работает нормально. я не могу поверить, что сделал эту ошибку новичка. Спасибо в любом случае

aymannblal 28.05.2019 14:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
288
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение заключалось в том, чтобы убедиться, что строка подключения завершается точкой с запятой и что conn.Open() успешно завершена перед выполнением команд или запросов.

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