ListView的DateTimePicker

时间:2013-01-31 07:00:32

标签: sql-server vb.net ado.net

有没有办法使用 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

1 个答案:

答案 0 :(得分:1)

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

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

      

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

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

    同样适用于SqlConnection,将其包装在Using语句中。

  2. 不要将字符串连接在一起以进行SQL查询,这会使您的应用程序最多发生SQL Injection次攻击。有一些示例说明如何创建参数化查询herehere (遗憾的是我没有在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属性获取日期。然后构造一个查询(如上例所示)并传递一个带有所选日期的参数。您可能会发现this question SQL Server日期有用。