为什么“ExecuteNonQuery”中要使用“Non”这个字眼?

21

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

所以,为什么在*Command类中该方法被称为ExecuteNonQuery而不是ExecuteQuery

我们抛给数据库的不都是SQL查询语句吗?

3个回答

18

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

如果您不希望得到结果,则这不太像是一次查询,而更像是一个语句或命令。


1
但它可以是一个SELECT语句。那么为什么不直接使用“myCommand.Execute()”呢? - Camilo Martin
@Camilo: 因为有ExecuteReader()函数可以返回查询结果,或者使用ExecuteScalar()函数用于单值结果。 - Will Marcouiller
谢谢,我不知道ExecuteScalar :) - Camilo Martin

2
如果它们是INSERT、DELETE、CREATE TABLE等操作,那么就不行。

1
但是一个能够执行查询(即SELECT)的方法不应该被称为ExecuteNonQuery。这就是让我感到困扰的地方。 - Camilo Martin
2
可以执行SELECT,但使用ExecuteNonQuerySELECT没有任何意义,因为它实际上不返回结果。 - Dean Harding
2
@Camilo,数据库类不知道你是否需要明确的响应,告诉数据库对象你不希望返回任何内容,这为优化留下了空间。作为开发人员,你可能不希望通过选择语句(例如select * into ...)返回任何内容。 - Rune FS
谢谢Rune FS,我明白了。 - Camilo Martin

0

我认为查询是向数据库请求记录的过程。修改数据/数据库的操作不应被视为查询。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接