【发布时间】:2021-09-03 03:54:31
【问题描述】:
我有 2 个 asp.net WebForms,WebForm1 包含一个重定向到 WebForm2 的按钮,WebForm2 包含一个需要填写的联系表单才能继续执行订单。 我在其中有一个连接到数据库的下拉列表,并且根据单击 WebForm1 上的按钮的产品,从数据库中的特定产品中显示当前数量。 订购后,我需要根据下拉列表中选择的产品数量从数据库中减少/扣除产品数量。
下单后如何减少产品数量?
这是填充几个文本框、插入货币并根据单击按钮的 WebForm1 上的哪个产品填充下拉列表“数量”的代码:
protected void Page_Load(object sender, EventArgs e)
{
string productName = Request.QueryString["productname"];
txt_product13.Text = productName;
var dictionary = new Dictionary<string, object>
{
{ "@ProductName", productName }
};
var parameters = new DynamicParameters(dictionary);
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (var connection = new SqlConnection(CS))
{
connection.Open();
var sql = "SELECT * FROM ProductsDB WHERE ProductName = @ProductName";
var product = connection.QuerySingle<Product>(sql, parameters);
CultureInfo EuroCulture = new CultureInfo("fr-FR");
txt_productprice.Text = product.Price.ToString("c", EuroCulture);
for (int i = 1; i <= product.Quantity; i++)
{
dropdownlist1.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
}
现在我有这个用于减少的代码,你能告诉我我的错误在哪里吗?为什么它没有从数据库中减少数量?
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
string productName = Request.QueryString["productname"];
using (var connection = new SqlConnection(CS))
{
connection.Open();
var sql = "UPDATE ProductsDB SET Quantity = WHERE ProductName = @ProductName" + dropdownlist1.SelectedValue + "'";
connection.Close();
}
【问题讨论】:
-
查询无效,因为它无效:
UPDATE ProductsDB SET Quantity = WHERE ProductName = @ProductName" + dropdownlist1.SelectedValue + "'"。您不能将列的值设置为WHERE子句,并且将下拉列表的值连接到变量的名称也没有什么意义。 -
学习正确地参数化您的数据库查询。
-
我修复了查询,但无论我从下拉列表中选择什么值,它都只会递减 1。为什么?
var sql = "UPDATE ProductsDB SET Quantity = Quantity - " + dropdownlist1.SelectedValue + " WHERE ProductName = @ProductName";
标签: c# asp.net sql-server dapper