用下面的代码:如何判断我的SqlCeDataReader在调用SqlCeCommand.ExecuteReader()后是否包含任何vals?
SqlCeDataReader myReader = cmd.ExecuteReader(CommandBehavior.SingleRow);
itemID = myReader.GetString(0);
packSize = myReader.GetString(1);
...我得到一个例外,“没有数据存在行/列”我希望它静静地“中止”,而不是抛出异常
这个案例。尝试分配前有没有办法先测试?
我尝试这样做,但它确实没有好:
SqlCeDataReader myReader = cmd.ExecuteReader(CommandBehavior.SingleRow);
if (null != myReader.GetString(0))
{
itemID = myReader.GetString(0);
}
if (null != myReader.GetString(1))
{
packSize = myReader.GetString(1);
}
另一种可能是把它包起来在一条try..catch和“吃”的例外,但我不知道如果是这样的最好的方式去...
这是基于我的SqlDataReader'的'知识,而不是' SqlCeDataReader',但在前一种情况下,您必须先“读取()”第一条记录。假(0)返回表示不再有记录。 –
谢谢;我曾经假定调用ExecuteReader去了一切。因此,我添加了“if(myReader.Read()){}”使您的评论成为答案,并将其标记为*答案。 –
感谢您的提议。正如我所建议的,我的回答只是一个猜测,这就是为什么我把它放在评论中而不是答案中。此外,我喜欢@ MD.Unicorn对哈斯罗斯的额外支票,这已经让我不知所措。 –