记录数据读取器中受影响的条件



这是我的代码:

SqlCommand command = new SqlCommand("select * from table1 where col1 = 'YES'", conn);
command.CommandType = CommandType.Text;
SqlDataReader dr = command7.ExecuteReader();
if (dr.RecordsAffected>0)
{
}

select查询传递的条件值很少,但它仍然绕过if条件。

请参阅文档。select语句不会影响任何行,也不会插入、删除或更新任何行。因此,如果选择,该值将始终为0。如果要检查是否有返回的记录,请改用HasRows

using(SqlCommand command = new SqlCommand("select * from table1 where col1 = 'YES'", conn))
{
command.CommandType = CommandType.Text;
using(SqlDataReader dr = command7.ExecuteReader()) {
if (dr.HasRows) {
}
}
}

旁注:

  • using块中包装类型实现IDisposable的实例,以确保非托管资源始终被释放
  • 如果您有要在语句中使用的输入,则使用参数而不是硬编码值。目前尚不清楚这里是否是这种情况,所以我保留了原话
  • 如果要在读卡器中读回数据,则不应使用*,而应在SELECT中指定列名。这可以保护您的代码不受架构更改的影响,就像表中定义列的顺序一样。示例:SELECT col1, col2, col3 FROM table...

最新更新