0

有没有办法使用DateTimePicker作为ListView 的搜索设备?

我不知道如何使用 DateTimePicker 作为我的搜索引擎...

这是我的搜索代码:

Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim da As SqlDataAdapter
Dim ds As DataSet
Dim itemcoll(100) As String

Me.ListView1.View = View.Details
Me.ListView1.GridLines = True
ListView1.Items.Clear()

conn = New SqlConnection("Data Source=#####;Initial Catalog=#####;Persist Security Info=True;User ID=#####;Password=#####")
Dim strQ As String = String.Empty
strQ = "SELECT ControlNo,EmpNo,CheckOutDate,CheckOutTime,TaxiNo,PlateNo,Model,Make FROM dbo.ChkInOut WHERE ControlNo ='" + txtsearch.Text + "'"

cmd = New SqlCommand(strQ, conn)
da = New SqlDataAdapter(cmd)
ds = New DataSet
da.Fill(ds, "Table")
Dim i As Integer = 0
Dim j As Integer = 0
For i = 0 To ds.Tables(0).Rows.Count - 1
    For j = 0 To ds.Tables(0).Columns.Count - 1
        itemcoll(j) = ds.Tables(0).Rows(i)(j).ToString()
    Next
    Dim lvi As New ListViewItem(itemcoll)
    Me.ListView1.Items.Add(lvi)
 Next
4

1 回答 1

1

您的代码几乎没有问题,所以让我们一次解决一个问题

  1. SqlCommand继承自DbCommand,它实现了IDisposable接口。

    该接口的主要用途是释放非托管资源。

    最好的方法是使用Using关键字。有关其中的代码示例,请查看本页底部的示例代码。

    SqlConnection也是如此,将其包装在一个Using语句中。

  2. 不要将字符串连接在一起进行 SQL 查询,这会使您的应用程序面临SQL 注入攻击。这里这里 都有如何创建参数化查询的示例(不幸的是,我在 MSDN 上没有看到好的示例)

    在您的情况下,查询将如下所示:

    strQ = "SELECT ControlNo, ..<rest of columns>.. ,Model,Make " & _
           "FROM dbo.ChkInOut " & _
           "WHERE ControlNo = @controlNo"
    
    cmd = New SqlCommand(strQ, conn)
    cmd.Parameters.AddWidthValue("@controlNo", txtsearch.Text);
    
          ... rest of code here ...
    
  3. 要按用户指定的日期查询,首先需要从DateTimePicker.Value属性中获取日期。然后构造一个查询(如上面的示例)并传递一个带有所选日期的参数。您可能会发现这个关于 SQL Server 日期的问题很有帮助。

于 2013-02-02T04:46:50.097 回答