sql - 使用 SqlDataReader 从 SQL Server 数据库读取数据时出错

标签 sql sql-server vb.net

我有以下 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/

相关文章:

sql - Flyway Migrate [SQL] - 处理对象依赖性

java - android tcp/ip 套接字不会将数据发送到计算机

sql - postgres View 中的临时序列

sql - 如何在 SQL 查询中使用排序方式实现 GraphQL 游标

SQL 查询 - 如果重复项超过 3 个,是否删除重复项?

php - 将 DateTime 类转换为字符串

mysql - 我尝试在sql中创建这个函数

MYSQL - 从列中选择一个值或(如果没有给出值)选择全部

.net - VS 2010 中项目不可用错误

c++ - 好。将Leap带入C++。正确的决定?