【问题标题】:Why the "Non" in "ExecuteNonQuery"?为什么“ExecuteNonQuery”中的“Non”?
【发布时间】:2011-02-19 12:20:58
【问题描述】:

我知道这不是一个非常有用的问题,但我不禁被它困扰。

所以,
为什么将所述方法(在 *Command 类中)称为
ExecuteNonQuery 而不是 ExecuteQuery

我们扔给 DB 的那些 SQL 语句不就是查询吗?

【问题讨论】:

    标签: .net sqlcommand oledbcommand dbcommand executenonquery


    【解决方案1】:

    如果它们是 INSERT、DELETE、CREATE TABLE 等,则不会。

    【讨论】:

    • 但是可以执行查询(即SELECT)的方法不应该被称为ExecuteNonQuery。这就是困扰我的地方。
    • 可以执行SELECT,但是将ExecuteNonQuerySELECT一起使用是没有意义的,因为它实际上并没有返回结果。
    • @Camilo 数据库类不知道您是否需要明确地告诉数据库对象您不期望任何返回的响应为优化腾出空间。作为开发人员,您可能不希望 select 语句返回任何内容(select * into ... for one)
    • 感谢 Rune FS,说得通。
    【解决方案2】:

    从语义上讲,查询是您为返回数据而执行的操作。您正在“查询”数据库以查找 Y 中的所有 X。

    如果您不期望返回结果,则与其说是查询,不如说是语句或命令。

    【讨论】:

    • 但它可以是一个 SELECT。那么为什么不只是“myCommand.Execute()”呢?
    • @Camilo:因为有 ExecuteReader() 会返回查询结果,甚至 ExecuteScalar() 会返回单值结果。
    • 谢谢,我不知道 ExecuteScalar :)
    【解决方案3】:

    我认为它是一个查询,它要求数据库返回记录。更改数据/数据库的操作不会是查询。

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      • 2011-02-27
      • 2014-03-03
      • 2023-03-25
      • 2021-07-15
      相关资源
      最近更新 更多