You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#桌面应用中实现超市商品售出后数据库库存扣减功能

超市系统商品售出库存扣减的C#实现方案

原代码的问题

你写的SQL用了字符串拼接变量,不仅有SQL注入风险,还犯了语法错误:数值类型的售出数量被加了单引号,数据库会把它当成字符串处理,自然执行失败。

正确实现(参数化查询)

用参数化查询是标准解决方案,既安全又能避免语法/类型问题,以下是完整的C#代码示例(假设用SQL Server数据库):

using System.Data.SqlClient;

// 替换成你实际的变量值
string targetProductName = "可口可乐";
int soldQuantity = 3;
// 替换成你的数据库连接字符串,比如"Server=.;Database=SuperMarketDB;Trusted_Connection=True;"
string dbConnStr = "你的数据库连接字符串";

try
{
    // using语句自动释放资源,不用手动关闭连接
    using (SqlConnection conn = new SqlConnection(dbConnStr))
    {
        // 参数化SQL,用@定义参数占位符
        string updateQuery = "UPDATE ProductTable SET Product_Quantity = Product_Quantity - @SoldQty WHERE Product_Name = @ProdName";
        
        conn.Open();
        using (SqlCommand cmd = new SqlCommand(updateQuery, conn))
        {
            // 绑定参数,指定值和类型(AddWithValue会自动识别类型,也可以用Add指定更精确的类型)
            cmd.Parameters.AddWithValue("@SoldQty", soldQuantity);
            cmd.Parameters.AddWithValue("@ProdName", targetProductName);
            
            // 执行更新,返回受影响的行数
            int updatedRows = cmd.ExecuteNonQuery();
            
            if (updatedRows > 0)
            {
                // 库存扣减成功,这里可以加提示、日志等逻辑
                Console.WriteLine("库存更新完成");
            }
            else
            {
                // 没找到对应商品,提示异常
                Console.WriteLine("未找到指定商品,库存未变动");
            }
        }
    }
}
catch (SqlException dbEx)
{
    // 捕获数据库相关错误,比如连接失败、约束冲突(比如库存为负)
    Console.WriteLine($"数据库出错:{dbEx.Message}");
}
catch (Exception ex)
{
    // 处理其他意外错误
    Console.WriteLine($"操作失败:{ex.Message}");
}

额外提示

  • 如果是同时扣减多个商品,建议加事务处理,确保所有商品的库存更新要么都成功,要么都回滚,避免数据不一致。示例:
    // 在conn.Open()后添加
    SqlTransaction tran = conn.BeginTransaction();
    cmd.Transaction = tran;
    // 执行完所有更新后
    tran.Commit(); // 成功就提交
    // 如果出错,在catch里执行 tran.Rollback();
    
  • 可以在SQL里加库存判断,比如WHERE Product_Name = @ProdName AND Product_Quantity >= @SoldQty,避免库存被扣成负数。

内容的提问来源于stack exchange,提问作者NAM3L3SSRJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 03:15:57