我看到了这段代码:
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;
答案 0 :(得分:1)
我想你回答了自己的问题。你不能比这个好多了
object objvalid = cmd.ExecuteScalar();
retVal = (null != objvalid);
但是,从您的评论中,您真正想要的是知道表名是否存在列名。为此,我建议您改为使用DbDataAdapter.FillSchema
或DbConnection.GetSchema
。这两个选项都允许您针对所有列对数据库执行单个查询,而不是为每个列重新查询数据库。
答案 1 :(得分:1)
首先,您的方法在效率方面没有任何(可衡量的)差异,在这种情况下它只是无关紧要。
你想检查什么?
null
而您想知道,请检查。然后你的第二个方法是最好的。COUNT
)并且您想知道它是否大于零,请检查一下。然后最后一种方法很好。 然而,你的第一种方法并不是良好的做法,don't rely on exceptions在正常的控制流程中。