检查ExecuteScalar结果是否存在的最有效方法是什么?
本文关键字:有效 方法 是什么 存在 ExecuteScalar 结果 结果是 是否 检查 | 更新日期: 2023-09-27 18:03:48
我看到了下面的代码:
object objvalid = cmd.ExecuteScalar();
//made it this far - must not have thrown an exception
retVal = true;
…但我认为其中一个可能会更好:
object objvalid = cmd.ExecuteScalar();
retVal = (null != objvalid);
…
Int32 anybodyThere = (Int32) cmd.ExecuteScalar();
retVal = anybodyThere > 0;
我想你已经回答了你自己的问题。没有比这更好的了
object objvalid = cmd.ExecuteScalar();
retVal = (null != objvalid);
然而,从你的评论,似乎你真正想知道的是一个列名是否存在于一个表。出于这个目的,我建议您考虑使用DbDataAdapter.FillSchema
或DbConnection.GetSchema
。这两个选项都允许对数据库的所有列执行单个查询,而不是为每个列重新查询数据库。
首先,您的方法在效率方面没有任何(可测量的)差异,在这种情况下它只是无关紧要的。
您想检查什么?
- 如果它可以返回
null
并且您想知道,请检查。那么你的第二个方法是最好的。 - 如果查询返回一个数值(例如来自
COUNT
),并且您想知道它是否大于零,只需检查即可。那么最后一种方法就可以了。
然而,你的第一个方法不是好的实践,不要依赖异常在你的正常控制流。