【问题标题】:problems on getting the date range in listview在列表视图中获取日期范围的问题
【发布时间】:2013-12-29 05:15:08
【问题描述】:

这是代码:

Private Sub btnSearchMaintDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearchMaintDate.Click
    con.Open()
    ListView1.Items.Clear()
    cmd = New SqlCommand("SELECT * FROM tblMaintenanceRpt WHERE dates BETWEEN '" & date1.Value & "' AND '" & date2.Value & "'", con)
    cmd.CommandType = CommandType.Text
    Dim dr As SqlDataReader
    dr = cmd.ExecuteReader
    While dr.Read
        Dim lv As New ListViewItem
        With lv
            .Text = dr(1).ToString
            .SubItems.Add(dr(2).ToString)
            .SubItems.Add(dr(3).ToString)
            .SubItems.Add(dr(4).ToString)
        End With
        ListView1.Items.Add(lv)
    End While
    dr.Close()
    con.Close()
End Sub

我在 While dr.read 中有一个错误,它说 SqlException 未处理。将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。但是,当我尝试删除查询中的单引号时,它没有错误,但获取日期范围的结果不会在列表视图中查看。

【问题讨论】:

    标签: sql-server vb.net datetime datetimepicker


    【解决方案1】:

    尝试在字符串查询中使用参数而不是附加日期:

    cmd = New SqlCommand("SELECT * FROM tblMaintenanceRpt WHERE dates BETWEEN @date1 AND @date2", con)
    cmd.Parameters.AddWithValue("@date1", date1.Value)
    cmd.Parameters.AddWithValue("@date2", date2.Value)
    

    使用参数还可以使您的应用程序不易受到 SQL 注入的影响。

    【讨论】:

    • 这可能会有所帮助,但我不知道如何使用您回答的代码,呵呵 xD
    • haha.. 那 3 行打算替换你的这行代码:cmd = New SqlCommand("SELECT * FROM tblMaintenanceRpt WHERE dates BETWEEN '" & date1.Value & "' AND '" & date2.Value & "'", con)
    • 好的,但是分号有问题,字符无效
    • 抱歉,删除它们。它是 C# 语法,而不是 VB。我现在从我的答案中删除它..
    • boom!,没问题的人。你的回答很有帮助。你最好的:)
    【解决方案2】:

    如果您想忽略日期时间值的时间部分,您可以使用 >= 和 date1.Value 和date2.Value 放在MessageBox 中可能会有所帮助,以查看它们的内容。

    【讨论】:

    • like this?cmd = New SqlCommand("SELECT * FROM tblMaintenanceRpt WHERE dates>= '" & date1.Value & "' AND dates
    • 只是< 而不是<=。 @har07 关于参数化也有一个很好的观点。
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多