2011-08-01 51 views
0

我有最令人沮喪的問題,基本上我有一個網站和一個web服務運行在同一臺服務器上。兩者都使用ADO.net使用我自己創建的一些自定義調用來連接到數據表,但該網站從未遇到連接到特定的proc以返回數據的問題,但是web服務曾經在每100次調用一次proc返回一個空的數據集,即使它應該回來填充並在SQL Mgmt Studio的查詢中執行。奇怪的是它的作品大部分時間,但在奇數場合返回此錯誤:偶爾返回空數據集的Web服務

System.IndexOutOfRangeException: Cannot find table 0. at System.Data.DataTableCollection.get_Item(Int32 index)

Dim SQLCmd As SqlCommand = CreateSPCommand("VerifyCredentialsSP") 
SQLCmd.Parameters.AddWithValue("@Password", Credentials.Password) 
GetData(SQLCmd) 
ds.DataSetName = "Customer" 

    If ds.Tables(0) IsNot Nothing Then 

     ds.Tables(0).TableName = "Customer" 
    End If 

回答

0

的一種方式做,這是捕獲異常被拋出,但更好的方法是檢查nullnothing你的情況。

請勿訪問索引ds.Tables(0)...。 做一次檢查,如果你的數據集dsnull訪問它像這樣前:

If ds IsNot Nothing then 
    'only then can you index ds. 
end if 

這樣就避免了因爲它包含了一些有效的基準數據集的索引查找。在你的方法中,你正在訪問Tables(0)這可能存在也可能不存在,沒有有效的檢查你的代碼可能會拋出異常,在這種情況下它有!

+0

嗨JonH,我同意,但問題是它應該仍然返回一個表,即使沒有行返回。它就像web服務/數據連接以某種方式退出,但每100-150次調用一次。 – David

+0

大衛,我不能告訴你爲什麼,但你仍然應該進行錯誤檢查。它不會從表格中提取數據,您將不得不使用分析器或其他工具來理解爲什麼它不會回來。這可能只是一個時間問題..這些問題很難解決,祝你好運。 – JonH

+0

謝謝無論如何:) – David