我的 MS Access 数据库不会更新 asp.net

Posted

技术标签:

【中文标题】我的 MS Access 数据库不会更新 asp.net【英文标题】:My MS Access database won't update 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= 在哪里?”像这样? 【参考方案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);

【讨论】:

以上是关于我的 MS Access 数据库不会更新 asp.net的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET - VB.NET - 更新 MS_Access 表

OleDbCommand 不会更新 MS Access 数据库,不会引发错误

MS Access 数据表不会根据组合框更新

MS Access 2010:未绑定的组合框不会更新

如何使用 asp.net 从客户端读取 ms-access 数据库文件

查询不会更新子窗体 MS-Access 中的表