【发布时间】:2016-11-08 05:18:03
【问题描述】:
这是我在尝试删除锦标赛时收到上述错误的代码。由于锦标赛与图像相关联,因此代码首先调用 ImageDeletion 函数,然后调用锦标赛计数函数,然后再删除整个锦标赛。
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 =@ClubId";
SqlCommand cmd = new SqlCommand(Query, con);
cmd.Parameters.AddWithValue("@ClubId", ClubId);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
我当时和那里都关闭了连接,但我仍然收到此错误。
请指出我在哪里犯了错误。提前致谢
【问题讨论】:
-
使用 using 块来处理这样的问题。希望这会有所帮助
标签: c# sql connection database-connection sqldatareader