Asp.net从数据集中提取数据

Asp.net从数据集中提取数据,asp.net,vb.net,Asp.net,Vb.net,有点背景。这是我第一个用VB编写的asp.net项目,除了一点sql之外,我对编程知之甚少 所以我的问题。我正在建立一个网站,点击按钮,它将根据OrderNumer进行搜索,提取订单信息,并用数据填充一些txt框。我用我需要的数据创建了一个数据集。现在,如果我将其更改为查看我的sql表,我没有错误,也没有数据被提取,但是如果我尝试使用我的数据集,我会得到一个无效的对象错误。非常感谢您的帮助 以下是我使用的代码: Public Sub Button1_Click(sender As Object,

有点背景。这是我第一个用VB编写的asp.net项目,除了一点sql之外,我对编程知之甚少

所以我的问题。我正在建立一个网站,点击按钮,它将根据OrderNumer进行搜索,提取订单信息,并用数据填充一些txt框。我用我需要的数据创建了一个数据集。现在,如果我将其更改为查看我的sql表,我没有错误,也没有数据被提取,但是如果我尝试使用我的数据集,我会得到一个无效的对象错误。非常感谢您的帮助

以下是我使用的代码:

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim cmd As New SqlCommand
    Dim SqlQuery As String
    Dim conn As New SqlConnection

    cmd.Connection = conn
    conn.ConnectionString = "Data Source=Myserver;database=XXXXX;uid=XXXXX;password=XXXXXXX;Initial Catalog=XXXXX;"

    SqlQuery = ("SELECT ShipName + ShipName2 FROM ds Where OrderNumber =" & txtOrderNumber.Text & " ")
    conn.Open()
    cmd.CommandText = SqlQuery

    Dim sdr As SqlDataReader = cmd.ExecuteReader()
    If sdr.HasRows Then
        While sdr.Read()
            txtFullName.Text = sdr.Item("ShipName").ToString
        End While
        sdr.Close()
    Else
        MsgBox("OrderNumber #" & txtOrderNumber.Text & " " & "Not Found.")

    End If
    conn.Close()
End Sub

您的SqlQuery分配应该更像这样:

SqlQuery = ("SELECT ShipName + ShipName2 FROM ds Where OrderNumber ='" & txtOrderNumber.Text & "' ")
请注意,唯一的更改是将txtOrderNumber.Text值用单引号括起来


顺便说一下,这类代码容易受到SQL注入攻击。您应该使用SQL参数。

您在哪一行代码上收到该错误?我认为SQL查询的结果集不会包含ShipName列,因为SQL会附加ShipName和ShipName2列。尝试将选择更改为“选择ShipName+ShipName2作为ShipName…”这取决于文本框的内容。如果是一个数字,语法就可以了。尽管SQL注入是正确的,但参数是正确的。同意Calvedos,但基于错误,我可以假设OrderNumber不是数字,或者OrderNumber的列类型是文本类型。