【问题标题】:ASP.NET C# Deleting from access databaseASP.NET C# 从访问数据库中删除
【发布时间】:2018-11-09 16:39:29
【问题描述】:

我创建了一个包含“删除”按钮的网格视图,用于删除行。

我的代码:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    string username = (string)Session["user"];
    string path = this.GridView1.SelectedRow.Cells[3].Text;
    Cart cart = new Cart();
    cart.Deleteitem(path,username);
}

public void Deleteitem(string path, string username)
{
    string sql = string.Format("DELETE FROM Cart WHERE path = '{0}' AND userid = '{1}' ", path, username);
    DBC dbc = new DBC();
    dbc.InsertUpdateDelete(sql);
}

 public void InsertUpdateDelete(string sql)
{
    this.cmd = new OleDbCommand(sql, this.con);
    this.con.Open();
    this.cmd.ExecuteNonQuery();
    this.con.Close();
}

我的问题是,当我按下“DELETE”按钮时,什么也没有发生,什么都没有删除,这是什么问题?

【问题讨论】:

  • 您是否在删除后检查过您的数据库,看看它是否已更新?如果您的数据库已更新,那么您的 GridView 可能不会刷新它的数据。
  • 您是否正在实施任何 gridview RowDeleting 事件?还要放置调试点并检查您的 sql 删除语句
  • 重新选择所有记录或刷新,但是您在删除后绑定网格。
  • 我检查了我的数据库,没有任何改变,但是另一种方法,例如:插入,没有任何问题..

标签: c# sql asp.net ms-access


【解决方案1】:

我的猜测是你可能会抛出一个错误,但你没有看到它。将您对 this.cmd.ExecuteNonQuery(); 的调用封装在 try...catch...finally 块中,然后单步执行并查看是否捕获到错误。

我看到“错误”会阻止更新,但它们并不是真正的错误——比如语言被设置为英语而不是默认。

【讨论】:

    【解决方案2】:

    去掉{}周围的单引号。

    string.Format("DELETE FROM Cart WHERE path = {0} AND userid = {1}", path, username);
    

    【讨论】:

    • 如果 userid 是一个数字,只需删除那个引号。另请注意,您传入username,但您的sql 显示userid
    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多