有没有办法使用 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
答案 0 :(得分:1)
您的代码几乎没有问题,所以让我们一次带一个
SqlCommand
继承自DbCommand
,它实现了IDisposable
接口。
此接口的主要用途是释放非托管资源。
最好的方法是使用Using
关键字。有关代码示例,请查看this页面底部的示例代码。
同样适用于SqlConnection,将其包装在Using
语句中。
不要将字符串连接在一起以进行SQL查询,这会使您的应用程序最多发生SQL Injection次攻击。有一些示例说明如何创建参数化查询here和here (遗憾的是我没有在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 ...
要按用户指定的日期进行查询,您需要先从DateTimePicker.Value属性获取日期。然后构造一个查询(如上例所示)并传递一个带有所选日期的参数。您可能会发现this question SQL Server日期有用。