2012-11-07 92 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