这是我在尝试删除锦标赛时遇到上述错误的代码。由于锦标赛与图像相关联,因此在删除整个锦标赛之前,代码首先调用ImageDeletion函数,然后调用锦标赛计数函数。关闭所有连接,仍然会出现“已经有一个与此命令关联的打开的DataReader,必须先关闭”
protected void LVTournament_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
if (Session["TournId"] != null)
{
int ClubId = Convert.ToInt32(Request.Cookies["ClubDetails"]["ClubId"]);
int TournId = Convert.ToInt32(Session["TournId"]);
SqlConnection con1 = new SqlConnection(constr);
SqlConnection con2 = new SqlConnection(constr);
ImageDeletion(TournId);
string querydelTour = "DELETE FROM Tournaments WHERE TournamentId = @TournId";
SqlCommand cmd1 = new SqlCommand(querydelTour, con1);
cmd1.Parameters.AddWithValue("@TournId", TournId);
con1.Open();
cmd1.ExecuteNonQuery();
con1.Close();
UpdateTourCount(ClubId);
ClientScript.RegisterStartupScript(Page.GetType(), "Success", "<script language='javascript'>alert('Tournament Deleted...')</script>");
Response.Redirect("TournamentView.aspx");
}
else
{
ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "SessionExpires();", true);
return;
}
}
的图像删除功能
private void ImageDeletion(int TournId)
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmdchk = new SqlCommand("SELECT count(*) Valid FROM TournamentImages WHERE TournamentId= @TournId");
cmdchk.Connection = con;
cmdchk.Parameters.AddWithValue("@TournId", TournId);
con.Open();
int Count = (int)cmdchk.ExecuteScalar();
for (int i = 0; i <= Count; i++)
{
string query = "SELECT ImagePath FROM TournamentImages WHERE TournamentId = @TournId";
SqlCommand cmddel = new SqlCommand(query, con);
cmddel.Parameters.AddWithValue("@TournId", TournId);
SqlDataReader reader = cmddel.ExecuteReader();
while (reader.Read())
{
string FilePath = reader[0] as string;
string path = Server.MapPath(FilePath);
FileInfo file = new FileInfo(path);
if (file.Exists)
{
file.Delete();
}
}
}
con.Close();
}
而且比赛计数功能
protected void UpdateTourCount(int ClubId)
{
SqlConnection con = new SqlConnection(constr);
string Query = "UPDATE TournamentCount SET Count = Count + 1 WHERE ClubId [email protected]";
SqlCommand cmd = new SqlCommand(Query, con);
cmd.Parameters.AddWithValue("@ClubId", ClubId);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
我有密切的联系,然后和那里,还是我得到这个错误。
请问我在哪里犯错。在此先感谢
使用*使用*阻止像这样的问题。希望这可以帮助 –