我有以下 vb.net 代码
Protected Sub submit_date_Click(sender As Object, e As System.EventArgs) Handles submit_date.Click
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("GasNominationsConnectionString").ConnectionString)
conn.Open()
Using cmd As SqlCommand = conn.CreateCommand
cmd.CommandText = "select * from MorningReport where readdate = " & "'" & datedisplay.text & "'"
Dim sqlrd As SqlDataReader = cmd.ExecuteReader()
If sqlrd.HasRows Then sqlrd.Read()
Me.Label6.Text = sqlrd.Item("NteesHR")
End Using
End Using
End Sub
我遇到的问题是它不读取任何数据。 datedisplay.text
是一个使用 ajax 日历扩展器填充的文本框,当我调试数据时,我可以看到它获取了正确的日期,即 22/08/2013
这个例子。然后我收到错误
Invalid attempt to read when no data is present.
我遇到的问题是,如果我将 SQL 语句复制到 SQL Server Management Studio 中并针对表运行它,它可以正常工作并得到我想要的结果。
SQL 是
select * from MorningReport where readdate = '22/08/2013'
sql表中日期的格式为2013-08-22,类型为date。
我错过了什么?
最佳答案
使用 marc_s建议我使用参数化查询。请看下文。干杯
Protected Sub submit_date_Click(sender As Object, e As System.EventArgs) Handles submit_date.Click
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("GasNominationsConnectionString").ConnectionString)
conn.Open()
Using cmd As SqlCommand = conn.CreateCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "getMorningReportData"
cmd.Parameters.Add("datedisplay", SqlDbType.Date).Value = DateDisplay.Text
Dim sqlrd As SqlDataReader = cmd.ExecuteReader()
If sqlrd.HasRows Then
sqlrd.Read()
Me.Label6.Text = sqlrd.Item("NteesHR")
End If
End Using
End Using
End Sub
关于sql - 使用 SqlDataReader 从 SQL Server 数据库读取数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404316/