C# 为什么我会得到一个“;“连接已打开”;MySQL更新语句期间出错?
我正在用Winforms、MySQL和C#做一个大学出勤项目 在这方面,我想更新一个表中的“全部缺席”和“全部出席”。所以我为此编写了代码:C# 为什么我会得到一个“;“连接已打开”;MySQL更新语句期间出错?,c#,winforms,C#,Winforms,我正在用Winforms、MySQL和C#做一个大学出勤项目 在这方面,我想更新一个表中的“全部缺席”和“全部出席”。所以我为此编写了代码: int p = 0; int a = 0; string sno = ""; MySqlDataReader Reader; command.CommandText = "select * from attendance_monthly_rpt"; connection.Open(); Reader = command.ExecuteReader();
int p = 0;
int a = 0;
string sno = "";
MySqlDataReader Reader;
command.CommandText = "select * from attendance_monthly_rpt";
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
p = 0;
a = 0;
sno = Reader[1].ToString();
for (int k = 3; k <= 33; k++)
{
if ((Reader[k].ToString() == "P") || (Reader[k].ToString() =="OD"))
{
p += 1;
}
else if (Reader[k].ToString() == "Ab")
{
a += 1;
}
}
}
connection.Close();
这会引发错误“连接已打开”。如果将update语句放在循环之后,则只会得到最后一条记录
请帮助我为每个“学生”更新我的“Tot缺席”、“Tot出席”。您正在while循环外打开连接,然后再次尝试打开相同的连接,在while循环内创建一个新连接,或保持连接打开,执行需要执行的操作,然后关闭连接。您可以使用此选项检查连接的状态:
if (myConnection.State != ConnectionState.Open)
{
myConnection.Open();
}
别忘了使用try、catch和finally
finally
{
myConnection.Close();
}
删除大部分与打开或关闭连接无关的内容后,请查看代码:
…
connection.Open(); // <--------------+
… // |
// |
while (…) // |
{ // |
… // |
connection.Open(); // the connection is already open
…
connection.Close(); // <--------------+
} // |
connection.Close() // likewise, it'll already be closed here
…
connection.Open();//使用两个不同的连接,一个用于更新,另一个用于选择读卡器。我只想使用diff连接吗?。还是命令?我不知道回滚。不幸的是我点击了。
…
connection.Open(); // <--------------+
… // |
// |
while (…) // |
{ // |
… // |
connection.Open(); // the connection is already open
…
connection.Close(); // <--------------+
} // |
connection.Close() // likewise, it'll already be closed here