如何解决ExecuteNonQuery返回受影响的C#的意外行数
对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。
当要插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也为-1。
解决方法
这是我的代码
// 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,prixUnitaireVenteMO,alerteEntrepriseEnvoyee,fraisDeplacement ) VALUES(1051,85,20,2,2.2,88,-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
为假,但在数据库中插入该行以及我指定的所有信息
我手动重建查询以查看问题是否来自查询。参数,它再次无错误地插入数据库,但insertOk仍然为false!我什至还添加了另外两个不应该为空的字段,但是两种情况下的活动都是相同的
有任何想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。