【发布时间】:2016-05-11 12:14:47
【问题描述】:
我有一个从数据库中删除记录的问题。我想使用 Id 删除,但它已经存在其他表作为外键。这就是为什么我需要使用扩展名删除。
我需要从 Conferences、Conferences_Rewivers、Topics 三个表中删除记录。
我的代码是这样的,但它会引发错误,因为它不会从所有表中删除记录。我该如何解决?
protected void GridView1_RowDeleting1(object sender, GridViewDeleteEventArgs e)
{
SqlConnection cn = new SqlConnection("Data Source = ---\\SQLEXPRESS; Initial Catalog = --; Integrated Security = True");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "delete FROM Conferences where Id = @Id";
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@Id", GridView1.DataKeys[e.RowIndex].Value);
cn.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "delete from Conferences_Rewivers where fk_Conferences = @Id";
cmd.ExecuteNonQuery();
cmd.CommandText = "delete from Topics where fk_Conferences = @Id";
cmd.ExecuteNonQuery();
cn.Close();
BindGridView();
}
绑定网格视图
if(Session["user"] != null)
{
user = Session["user"] as User;
}
SqlCommand cmd = new SqlCommand("select Conferences.Id, Conferences.conferenceName, Conferences.conferenceDate , Conferences.conferencePlace, Conferences.submissionDueDate , Conferences.category, Conferences.status, Conferences.conferenceDescription from Conferences inner join Users on Conferences.fk_Users = Users.Id where Users.Id = @UserId", conn);
SqlParameter prm = cmd.Parameters.AddWithValue("@UserId", user.Id);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = new DataTable();
conn.Open();
da.Fill(dt);
conn.Close();
if(dt.Rows.Count > 0)
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
【问题讨论】:
-
这个解决方案有帮助吗:stackoverflow.com/a/7895411/728795?
标签: c# sql asp.net cascading-deletes