我有一个可视化C#程序正在运行,但每当我尝试进行更新时,会出现连接已关闭的错误。这是我的代码:
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
,所以我可以看到确实有一个连接。 不知道该怎么办。