这是我的代码
// 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 .依赖于 @@ROWCOUNT
或 SET NOCOUNT
状态会受到许多极端情况的影响,从某个角度或另一个角度来看,这些值是不正确的。
关于c# - ExecuteNonQuery() 返回受影响的意外行数 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15702131/