我正在动态选择一个表来进行选择,并且所有表中都没有一个字段。在我的读者内部,我如何检查集合中是否存在该字段?
我正在使用它,但它只确定它是否为空......不管它是否存在:
if (myReader.GetValue(myReader.GetOrdinal("PrePay")) != DBNull.Value)
myModel.PrePay = myReader.GetBoolean(myReader.GetOrdinal("PrePay"));
答案 0 :(得分:0)
看看SqlDataReader.GetSchemaTable(假设myReader是一个SqlDataReader)。
答案 1 :(得分:0)
while(reader.Read())
{
if(reader.GetOrdinal("FieldName")>=0) //field exists
{
....
}
}
答案 2 :(得分:0)
for (int i = 0; i < myReader.FieldCount; i++)
{
string name = myReader.GetName(i);
if (string.Equals(name , "PrePay", StringComparison.OrdinalIgnoreCase))
{
object value = myReader.GetValue(i);
if (!Convert.IsDBNull(value))
{
myModel.PrePay = (bool)value;
}
break;
}
}
如果您的读者返回多行,那么您应该在开头只执行一次查找,然后在迭代结果集时缓存序号以供使用。
答案 3 :(得分:0)
While(myReader.Read())
{
MessageBox.Show(myReader.Item("PrePay").toString());
}
基本上,如果“PrePay”的值为null,则它不存在,否则它就存在。