我正在开发一个使用 VB 的 ASP.NET 应用程序。我在 VB 文件中使用 SQLReader/SQLCommand/SQLConnection 来尝试提取数据值。
我很困惑地发现查询没有返回任何值的原因,这里有人向我展示了如何对查询进行故障排除以验证正在返回的东西,但事实并非如此。
我与一位同事交谈,他问它是否匹配,因为我正在输入一个字符串,并且数据库的 Text 字段是一个 nvarchar。如何在 VB 中声明变量,以便在作为查询参数输入时,它可以匹配?
它看起来匹配的数据类型只是基本的东西,比如“2”、“2a”、“1a”等等。
如果没有办法只声明 nvarchar,有没有人建议我如何解决这个问题?
谢谢一堆。
旁注:这是这个问题的某种延续:SQL Reader say no values exist, query appears fine
编辑:感谢所有帮助。我按照你们所说的进行了设置,但现在我收到一个错误消息“不存在从对象类型 System.Data.SqlClient.SqlParameter 到已知托管提供程序本机类型的映射。”
我将参数作为表单范围的变量,如下所示:
Private travelParameter As New SqlParameter("@trip", SqlDbType.NVarChar)
然后在主窗体中,
travelQuery.CommandText = "SELECT [StartLoc], [EndLoc],[TravelTime], [AvgSpeed], [Distance] FROM [TravelTimes] WHERE [TripNum] = @trip"
travelQuery.Parameters.AddWithValue("@trip", travelParameter)
稍后,将调用这样的函数。
FillWithTime("2", travelReader, time, newCell)
定义为:
Private Sub FillWithTime(ByVal TripNum As Char, ByRef travelReader As SqlDataReader, ByRef TimeData() As Object, ByRef Cell As System.Web.UI.WebControls.TableCell)
travelParameter.Value = TripNum
travelReader = travelQuery.ExecuteReader()
If (travelReader.Read()) Then
travelReader.GetValues(TimeData)
'stuff
End If
End Sub
再次感谢。
PS - Adam 和 Cerebus,如果可以的话,我会接受这两个答案。他们俩真的为我带来了这个想法,非常感谢。