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