Gopal
Gopal

Reputation: 12012

Why am I getting the error "input array is longer than the number of columns in this table"?

I have this code:

Public Function comb1(ByVal SName As String) As DataTable

        Dim dt As New DataTable
        cmd = New SqlCommand("Select Distinct RName from tb_RS_New", con)
        dr2 = cmd.ExecuteReader
        While (dr2.Read())
            dt.Rows.Add(dr2("RName"))
        End While
        Return dt

End Function

While loading the page, the error thrown was

Input array is longer than the number of columns in this table

What's wrong with my code?

Upvotes: 9

Views: 72592

Answers (1)

Darin Dimitrov
Darin Dimitrov

Reputation: 1039498

You need to add columns to this data table first:

Dim dt As New DataTable
dt.Columns.Add("RName", GetType(String))

Also I don't know much about the con, cmd and dr2 variables in your code but I would strongly recommend you to dispose them properly:

Dim dt As New DataTable
dt.Columns.Add("RName", GetType(String))

Using con As New SqlConnection("connection string to the database")
    Using cmd = con.CreateCommand()
        con.Open()
        cmd.CommandText = "Select Distinct RName from tb_RS_New"
        Using dr = cmd.ExecuteReader()
            While (dr.Read())
                dt.Rows.Add(dr("RName"))
            End While
        End Using
    End Using
End Using

Upvotes: 22

Related Questions