【问题标题】:My MS Access database won't update asp.net我的 MS Access 数据库不会更新 asp.net
【发布时间】:2018-05-27 17:18:35
【问题描述】:

我正在尝试更新我的数据库但没有成功。这就是我的桌子的样子:

https://i.stack.imgur.com/Q6EDk.png

打开模态框后是这样的:

https://i.stack.imgur.com/JusUp.png

所有表格都可以使用中继器,这是我的代码。

protected void Btnupdate_Click(object sender, EventArgs e)
{
    try
    {
        foreach (RepeaterItem RI in rptEdit.Items)
        {
            Label id = RI.FindControl("Pid") as Label;
            TextBox prdname = RI.FindControl("prdname") as TextBox;
            TextBox prdprice = RI.FindControl("prdprice") as TextBox;
            TextBox prdshortdesc = RI.FindControl("prdshortdesc") as TextBox;
            TextBox prdtype = RI.FindControl("prdtype") as TextBox;
            TextBox prdbrand = RI.FindControl("prdbrand") as TextBox;
            Literal ltl = RI.FindControl("ltlmsg") as Literal;

            string ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Table.accdb";
            string SqlString = "UPDATE ProductList SET Pname = ?";

            using (OleDbConnection conn = new OleDbConnection(ConnString))
            {
                using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("Pname", prdname.Text);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    ltl.Text = "<br/>Done.";
                }
            }
        }
    }
    catch (OleDbException ex)
    {
        foreach (RepeaterItem RI in rptEdit.Items)
        {
            Literal ltl = RI.FindControl("ltlmsg") as Literal;
            ltl.Text = ex.Message;
        }
    }
}

当我单击更新按钮时,它正在刷新,但没有任何反应。

请帮忙。

【问题讨论】:

  • 更新数据时是否遇到任何错误?听起来您需要 WHERE 子句来根据行 ID 更新数据。
  • 就像@TetsuyaYamamoto 所说,您可能需要一个WHERE 子句。现在的查询将更新表中的每一行并将每个Pname 设置为相同的值(`prdname.Text)。
  • “Pid= 在哪里?”像这样?

标签: asp.net webforms


【解决方案1】:
you just check your update query:
string SqlString = "UPDATE ProductList SET Pname = ?";

change to this:
string SqlString = "UPDATE ProductList SET Pname =@Pname ";

and change command parameter to pass scaler variable:
 cmd.Parameters.AddWithValue("@Pname", prdname.Text);

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多