2012-11-07 63 views
-2

因此,例如:如何检查ResultTable是否有字段?

while(reader.Read()) 
{ 
    var test = reader["NonExistentField"]; 
} 

这将会给我一个错误。测试null(reader["NonExistentField"] == null ?)也是一样。

+0

你不知道你的表中有哪些字段? – John

+0

这不是问题。假设,出于某种原因,我不这样做。 –

+2

我只是“尝试”访问该领域,如果它不在那里,则“抓”它。它仍然会返回一个错误,但是您可以在代码中处理这种情况。 –

回答

1

这完全是关于Schema而不是返回给你的DataTable。模式包含您需要的关于结果的所有信息,包括列名。我想你应该看看这里:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable.aspx

此外,在另一种简单的方法,你可以使用此代码:

DataTable result = new DataTable(); 

result.Load(reader); 

if (result.Columns.Contains("SomeColumnName")) 

//Do something about it. 

干杯

+0

假设我想在阅读器上执行等效的“包含”调用。 +1。 –

+0

这是正确的。另请参阅更新。希望能帮助到你。 – Rikki