Получение «Неверная операция. Ошибка «Соединение закрыто» при попытке обновления oracle из программы на Visual C #

1

У меня есть Visual С# программы работает, но я получаю соединение закрытой ошибки всякий раз, когда я пытаюсь обновить. Вот как выглядит мой код:

private void Update()
{
    try
    {
        String OneMachineScheduleOrder = "";
        String series = "";
        String oven = "";
        String battery = "";
        int x,y;

        var sortedTextboxes = panel1.Controls
                .OfType<TextBox>() // get all textboxes controls
                .OrderBy(ctrl => ctrl.TabIndex); // order by TabIndex
        foreach (TextBox txt in sortedTextboxes)
        {
            //Console.WriteLine(Convert.ToInt32(txt.TabIndex/2+1) + ": " + txt.Text);
            OneMachineScheduleOrder = (txt.TabIndex / 2 + 1).ToString();
            series = txt.Text.Substring(0, 1);
            oven = txt.Text.Substring(1, 2);
            battery = txt.Text.Substring(4).Trim();
            if (Char.IsLetter(series[0]) && int.TryParse(oven, out y) && int.TryParse(battery, out x) && txt.Text[3].Equals('/'))
            {
                using (OracleConnection con = new OracleConnection(connectString))
                {
                    OracleCommand cmd = connection.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "update Oven_Master set SERIES = '" + series + "', OVEN = '" + oven + "', BATTERY = '" + battery + "' where ONE_MACHINE_SCHEDULE_ORDER = '" + OneMachineScheduleOrder + "'";
                    cmd.Connection = con;
                    cmd.ExecuteNonQuery();
                    Console.WriteLine(cmd.CommandText);
                    con.Close();
                }
            }
            else { MessageBox.Show("Number: " + OneMachineScheduleOrder + " Is Invalid!"); }                           
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    finally
    {
        connection.Close();
    }
}

В принципе, у меня есть куча текстовых полей в форме, которая заполнена в формате A01/01. Я сортирую текстовые поля в переменную, а затем для каждого текстового поля я разбираю релевантные данные (OneMachineScheduleOrder, серия, печь и аккумулятор). Если данные находятся в правильном формате, я использую oracleConnection со строкой connectionstring, которая является глобальной (и я проверил с отладчиком, что она имеет правильное значение) для создания execute и OracleCommand. В противном случае предупредите пользователя о том, что данные находятся в неправильном формате.

Однако, я получаю сообщение об ошибке, что соединение открыто. Я попытался поставить con = OracleConnection останова на этой строке, и я получаю этот con = OracleConnection, поэтому я вижу, что есть соединение. Не знаю, куда идти отсюда.

  • 0
    Я посмотрел дважды, но я не вижу никаких кон.Открытый звонок
  • 0
    Где вы открываете связь?
Показать ещё 3 комментария
Теги:

1 ответ

7
Лучший ответ

попробуйте вызвать соединение.Откройте перед выполнением команды

(да, я знаю, что права правые)

  • 1
    О Боже. Я имел это раньше и получил ту же ошибку, поэтому я удалил ее, чтобы увидеть, если это имеет значение, а затем я изменил некоторые вещи, и теперь, очевидно, это работает. Спасибо!
  • 2
    Я надеюсь, что вы лицо ладонями; р
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню