首页 > 解决方案 > C# 中的 SQL 更新没有显示错误,但也没有更新

问题描述

这是2个整数的简单减法。SQL 语句有效,但数据库中的值没有更新。这是下面的代码。

var rest = antrag.Urlauber.RestUrlaub - antrag.Tage;
var sqlcom = "UPDATE Person SET RestUrlaub = " + rest +" WHERE ID = " + id +"";
db.Database.ExecuteSqlCommand(sqlcom);

任何人都知道问题可能是什么?

标签: c#sqlsql-update

解决方案


查询看起来没问题。

问题可能出在您的“身份”上

在您的数据库上手动执行查询并查看它是否更新。如果 id 错误,则查询返回成功而不更新任何内容。

建议 - 使用这样的查询很容易出现 SQL 注入等非常大的安全漏洞。考虑使用像 EntityFramework 这样的 ORM 或将查询参数作为 ADO 参数传递,而不是直接在查询中拼接


可选地,如果您不喜欢使用像 EntityFrameworks 这样的大型 ORM,我创建了一个简单的基于 dapper 的库,您可以考虑在 1 或 2 行中安全地运行查询。

如何使用:https ://github.com/sangeethnandakumar/Express-Data-Library

安装

Install-Package Twileloop.ExpressData -Version 1.0.0

安全运行参数化查询以防止 SQL 注入

var sql2 = $ "SELECT * FROM tblUser WHERE Id=@id AND Fname=@fname";
result = SqlHelper.QuerySafe<TblUser>(sql2, 
new 
{
    id = 1,
    fname = "Sangeeth"
},
_connectionString);

推荐阅读