这是我的代码:
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...