如何确定DataReader的结果集中是否存在某列?
我尝试了以下代码:
int columnOrdinal = reader.GetOrdinal("LastName");
columnExists = (columnOrdinal < 0);
但是如果列不存在,
GetOrdinal
会抛出异常。我的情况并不是异常的情况,相反,它是非常特殊的。
注意:与我的问题无关,但我想知道列是否存在,是因为我想获取列的序数位置,而不会在列不存在时抛出异常:
int columnOrdinal = reader.GetOrdinal("Lastname");
注意:与我的问题无关,但我想知道一个列是否存在的真正原因是我想知道该列是否包含空值:
itIsNull = reader.IsDBNull(reader.GetOrdinal("Lastname"));
不幸的是,IsDBNull
只接受序号,而 GetOrdinal
会抛出异常。所以我只能使用以下代码:
if (ColumnExists(reader, "Lastname"))
{
itIsNull = reader.IsDBNull(reader.GetOrdinal("Lastname"));
}
else
itIsNull = false;
注意:虽然与我的问题无关,但我想知道列是否存在的真正原因是有时结果集中不会出现该列,而我不想在处理数据库结果时抛出异常,因为这并不是异常情况。