c# - ExecuteNonQuery() 返回受影响的意外行数 C#

标签 c# sql sql-server

这是我的代码

      // SqlCommand query = new SqlCommand("INSERT INTO devis (idProposition, identreprise, tauxHoraire, fraisGenerauxMO, fraisGenerauxPiece, beneficeEtAleas, idStatut, prixUnitaireVenteMO ) VALUES(@idproposition,  @identreprise, @tauxHoraire, @fraisGenerauxMO, @fraisGenerauxPiece, @beneficeEtAleas, 1, @prixUnitaireVenteMO) ", Tools.GetConnection());
     SqlCommand query = new SqlCommand("INSERT INTO devis (idProposition, identreprise, tauxHoraire, fraisGenerauxMO, fraisGenerauxPiece, beneficeEtAleas, idStatut, prixUnitaireVenteMO, alerteEntrepriseEnvoyee,fraisDeplacement ) VALUES(1051,  85, 20, 2, 2, 2.2, 1, 88,0,-1) ", Tools.GetConnection());

    //query.Parameters.AddWithValue("idproposition", this.ID);
    //query.Parameters.AddWithValue("identreprise", competitor.ID);
    //query.Parameters.AddWithValue("tauxHoraire", competitor.CoefTauxHoraire);
    //query.Parameters.AddWithValue("fraisGenerauxMO", competitor.CoefFraisGenerauxMO);
    //query.Parameters.AddWithValue("fraisGenerauxPiece", competitor.CoefFraisGenerauxPiece);
    //query.Parameters.AddWithValue("beneficeEtAleas", competitor.CoefBeneficeEtAleas);
    //query.Parameters.AddWithValue("prixUnitaireVenteMO", Math.Round(competitor.CoefTauxHoraire * competitor.CoefFraisGenerauxMO * competitor.CoefBeneficeEtAleas, 2));
 bool insertOK = (query.ExecuteNonQuery() == 1);
 if (insertOK)
 {
    // DO SOMETHING
 }

insertOk 为 false 但在数据库中插入的行包含我指定的所有信息

我手动重建了查询,看看问题是否来自查询。参数,它再次无误地插入到数据库中,但 insertOk 仍然是错误的!我什至添加了另外两个不应为空的字段,但两种情况下的事件是相同的

有什么想法吗?

最佳答案

ExecuteNonQuery 它声称返回受影响的行数。。这是不正确的,因为客户端无法知道受影响的行数。文档错误地假设引擎将报告受影响的行数,但这取决于 session SET NOCOUNT状态。不要编写假定 NOCOUNT 始终打开的代码。如果您需要知道受影响的行数,请使用 OUTPUT clause .依赖于 @@ROWCOUNTSET NOCOUNT 状态会受到许多极端情况的影响,从某个角度或另一个角度来看,这些值是不正确的。

关于c# - ExecuteNonQuery() 返回受影响的意外行数 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15702131/

相关文章:

sql-server - SQL Case语句 VS Union All 性能

sql-server - SQL Server 相当于 Oracle LEAST?

c# - 如何从动态类型泛型列表中获取属性信息?

c# - 在 Windows Phone 中返回时将数据传回上一页的最佳方法

C# MVC,从 web.config 读取回车符

c# - 检查字符串的模式是否正确并区分它们

mysql - 选择类别树中某处具有 category_id 的记录

sql - 开仓、平仓按日期sql查询

sql server 删除重复的首字母缩略词

sql-server - Spark-sqlserver连接