我的 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 数据库,不会引发错误