我正在用Winforms,MySQL和C#做一個大學出勤項目。爲什麼在MySQL更新語句中出現「連接已經打開」錯誤?
因爲我想在一個表格中更新「Total Absent」和「Total Present」。所以我寫了這樣的代碼:
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();
現在我得到「sno」,「a」,「p」值。但是我想在MySQL表中更新這條記錄。所以我增加了一個UPDATE
聲明:
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;
}
}
command.CommandText = "update attendance_monthly_rpt set tot_persent = " +
p + ", tot_absent = " + a + " where student_no = '" +
sno + "'";
connection.Open(); // the connection is already open
command.ExecuteNonQuery();
connection.Close();
}
connection.Close()
這引發錯誤「的連接已經打開」。如果我在循環之後放置更新語句,我只能得到最後一條記錄。
請幫我更新每個「學生」的「Tot absent」,「Tot present」。
使用2個不同的連接,一個更新和一個選擇閱讀器循環 –
謝謝。是我想使用差異連接只?或命令也?。 – Sagotharan
我不知道回滾。所以很不幸我點擊。 – Sagotharan