【问题标题】:sql server inserts not working in release mode [closed]sql server插入在发布模式下不起作用[关闭]
【发布时间】:2014-05-08 20:26:18
【问题描述】:

我有一个 C# 桌面应用程序,可将行插入 sql server 数据库。我注意到如果我在发布模式下构建,行不会出现在数据库中。但如果我在调试模式下构建,它工作正常。这可能是什么原因造成的?

【问题讨论】:

  • 你仍然可以调试发布模式的构建,你知道的。你调查过吗?
  • 您的应用程序中是否有任何日志记录?
  • 发布和调试的配置是否不同(可能发布指向不同的数据库,因此您只是在查看错误的数据库)
  • 用户没有提供连接字符串...我在两种模式下都提供相同的连接字符串
  • 你能显示一些代码吗?你试过什么?

标签: c# .net sql-server


【解决方案1】:

感谢 Blorgbeard 指出我可以在发布模式下进行调试!当我切换到发布模式并尝试设置断点时,我注意到执行插入的代码在 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");

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多