我有一個可視化的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
,所以我可以看到有是的一個連接。不知道該從哪裏出發。
我已經看過兩次,但我看不到任何con.Open呼叫 – Steve
你在哪裏打開連接之前調用connection.Open ? –
但是,你有更大的問題。它被稱爲[Sql注入](http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work) – Steve