SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数。
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1
所以在查询表中是否有(某条)数据的时候,一定不能用select sql语句+ cmd.ExecuteNonQuery(),通过判断返回值是否大于0来判断。
解决方案:
1.
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1
所以在查询表中是否有(某条)数据的时候,一定不能用select sql语句+ cmd.ExecuteNonQuery(),通过判断返回值是否大于0来判断。
解决方案:
1.
SqlCeCommand.ExecuteScalar 方法 ( + 聚合查询)
执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。 例如一个聚合值。
cmd.CommandText = "select count(*) from users where id = 10000;"
int count = (int)cmd.ExecuteScalar() ;
2. 用ExcuteReader()方法返回一个reader
if(reader.Read() == false) { ...}
本文详细介绍了SqlCommand.ExecuteNonQuery方法的应用场景及返回值含义,强调了其不适用于判断表中是否存在数据的情况,并提供了两种替代方案:使用SqlCmd.ExecuteScalar方法进行聚合查询或者采用ExecuteReader方法。
3084

被折叠的 条评论
为什么被折叠?



