2014-07-09 26 views
0

我有一個可視化的c#程序正在運行,但每次嘗試更新時都會收到連接關閉錯誤。這裏是我的代碼如下所示:嘗試從visual c#程序更新oracle時出現「無效的操作。連接已關閉」錯誤

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來創建執行和OracleCommand。否則,請提醒用戶數據格式錯誤。

但是,我收到一個連接打開的錯誤。我嘗試在該行上放置一個斷點,並且我得到了那個con = OracleConnection,所以我可以看到有的一個連接。不知道該從哪裏出發。

+0

我已經看過兩次,但我看不到任何con.Open呼叫 – Steve

+0

你在哪裏打開連接之前調用connection.Open ? –

+1

但是,你有更大的問題。它被稱爲[Sql注入](http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work) – Steve

回答

5

嘗試執行你的命令

(是的,我知道笑右)

+0

哦,上帝。我之前有過這樣的錯誤,所以我刪除了它,看看它是否有所作爲,然後我改變了一些東西,現在顯然它起作用了。謝謝! –

+2

我希望你能面對現實; p –

+0

你看到這個答案的時候,意識到你已經在某個時間之前提出了這個答案,並且完全忘了。 (雙facepalm) – Kta

相關問題