本地服务器VS.生产服务器

时间:2011-09-22 20:45:56

标签: asp.net sql-server vb.net ado.net

我在这里有点疯狂。我将我的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.

1 个答案:

答案 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