asp.net - 无法更新访问数据库抛出asp.net
问题描述
我的访问数据库不会使用此代码更新。似乎是什么问题?我已经尝试了很多方法来更新我的访问数据库,但没有成功,请大家帮忙。
protected void Btnupdate_Click(object sender, EventArgs e)
{
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;
int updated;
string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Table.accdb";
using (var conn = new OleDbConnection(connection))
{
conn.Open();
string updSql = @"UPDATE ProductList SET
Pname = '" + prdname.Text + "' WHERE Pid = ?";
using (var cmd = new OleDbCommand(updSql, conn))
{
cmd.Parameters.Add("@Pname", OleDbType.VarChar).Value = prdname.Text;
updated = cmd.ExecuteNonQuery();
conn.Dispose();
conn.Close();
}
}
}
}
解决方案
只需使用 ? SQL 中的样式参数。
string sql = @"UPDATE ProductList SET Pname = ? WHERE Pid = ?";
然后只需确保在代码中添加参数的顺序与它们在 SQL 中出现的顺序相同。
cmd.Parameters.Add(prdName.Text);
cmd.Parameters.Add(int.Parse(id.Text));
您需要确保在 C# 中添加的变量的类型与 DB 中的类型(文本或数字)相匹配。然后可以根据需要正确引用或不引用。
推荐阅读
- docusignapi - 有没有办法删除在发件人视图上删除/修改上传到 DocuSign 的文档的功能?
- linux - Linux - grep -e 在从命令调用 script.sh 时有效,但在从 crontab 调用 script.sh 时失败
- android - 预览隐藏的实时视频时获得绿色图像
- javascript - 使用类数组的更简单方法
- react-native - React Native:删除 Expo Cookie
- jquery - 在一行中将多个按钮插入页面
- c# - 如何在wpf中具有大层次结构的子控件和父窗口之间进行通信?
- sql - VBA 函数/代码 - 将动态数据列转换为文本字符串
- java - 为 Azure 存储访问生成 SAS
- html - 如何正确堆叠单子以最终呈现为 html?