我在这里有点疯狂。我将我的Web应用程序移动到服务器并在下面得到此错误,但在我的localhost上它工作得很好。我有点失去我应该尝试的东西。任何帮助将非常感谢。当我为每个语句执行a时,我发现错误必须与数据集有关,而不是撤回任何数据。但奇怪的是,我为另一个页面上的每个语句执行了一个并且它工作正常。这是我的每个声明,我假设不起作用。当我在本地测试它时我假设它是b / c的原因很好:
Dim retObj As New ClassLibrary1.sql_class
For Each row As DataRow In retObj.sel_all_email_list(company).tables(0).rows
email += row("EMAIL_ADDRESS") & "/"
Next
“的 * ** * ** * ** * ** * ** * ** * ** * ** * ** * * sql_class
query = "SELECT * " _
& " FROM EMAIL_LIST " _
& " WHERE UCASE(COMPANY) = '" & company & "'"
Dim adapter As New OleDbDataAdapter(query, myConnection)
Dim ds As New DataSet
Try
myConnection.Open()
adapter2.Fill(ds, "test_table")
*returns the dataset, didnt want to type all of the code
Catch ex As Exception
Finally
myConnection.Close()
End Try
'*****************************************************
Error:
Exception Details: System.IndexOutOfRangeException: Cannot find table 0.
答案 0 :(得分:1)
检查生产中运行的SQL DB。
用于填充数据集的SQL语句未返回任何数据。这导致数据集没有任何表格。
因此,当您致电Dataset.Tables(0)
时,会抛出System.IndexOutOfRangeException
(因为Tables集合中没有表格)。
您可以在尝试访问该集合之前调用Dataset.Tables.Count
以确保其中包含项目,从而缓解此问题。
If retObj.sel_all_email_list(company).tables.count > 0 Then
'Do something
End If