sql server插入不在发布模式下工作

时间:2014-05-08 20:26:19

标签: c# .net sql-server

我有一个C#桌面应用程序,它将行插入sql server数据库。我注意到如果我在Release模式下构建,则行不会出现在数据库中。但如果我在Debug模式下构建,它可以正常工作。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

感谢Blorgbeard指出我可以在发布模式下进行调试!当我切换到发布模式并尝试设置断点时,我注意到执行Insert的代码在Visual Studio中被“灰显”了!代码是:

Debug.Assert(cmd.ExecuteNonQuery() == 1)

显然在发布模式下跳过Debug.Assert。

我通过将其更改为:

来修复它
var nRows = cmd.ExecuteNonQuery();
Debug.Assert(nRows == 1)

修改

上述解决方案并不理想,因为虽然它现在可以在发布模式下工作,但它只检查调试模式下的返回码。更好的版本是:

if (cmd.ExecuteNonQuery() != 1)
    throw new ApplicationException("sql statement failed");