如何在where子句中使用date来从vb.net中的访问数据库中搜索数据?

时间:2018-02-11 14:48:13

标签: vb.net

我想使用where子句中的日期从我的数据库中搜索数据。 但是我在执行代码时遇到错误。 我正在尝试这段代码。

Sub comboboxSELECTED()
    Dim a As Date
    Form1.ComboBox1.Text = a

    Dim con As New OleDb.OleDbConnection
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Mdm.accdb"
    con.Open()

    Dim q As String = "select * from Rice Where DateReceived =" & Form1.ComboBox1.SelectedText
    Dim cmd As New OleDb.OleDbCommand(q, con)

    Dim Reader As OleDb.OleDbDataReader = cmd.ExecuteReader
    While Reader.Read

        Form1.ListView1.Items.Add(Reader(0))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(1))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(2))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(3))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(4))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(5))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(6))
        Form1.ListView1.Items(Form1.ListView1.Items.Count - 1).SubItems.Add(Reader(7))
        Form1.DateTimePicker1.Text = Reader("DateReceived")
        Form1.TxtEnrolment.Text = Reader("Enrolment")

        Form1.TxtReceived.Text = Reader("QtyReceived")
        Form1.TxtTotal.Text = Reader("TotalQuantity")
        Form1.TxtUtilised.Text = Reader("QtyUtilised")
        Form1.TxtBalance.Text = Reader("Balance")

    End While
    Reader.Close()

    con.Close()

End Sub

2 个答案:

答案 0 :(得分:0)

请尝试将该部分代码更改为:

String q = "select * from Rice Where DateReceived = @datercvd"; 
OleDb.OleDbCommand cmd = New OleDb.OleDbCommand(q, con);
OleDbParameter objectdate = new OleDbParameter("@datercvd", OleDbType.DBDate);
objectdate.Value = Convert.ToDateTime(Form1.ComboBox1.SelectedText); 
cmd.Parameters.Add(objectdate);

它在日期匹配,从字符串转换,并处理SQL注入。

答案 1 :(得分:0)

VB.net代码......

Private Sub ComboBoxSelected()
        Using con As New OleDb.OleDbConnection
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Mdm.accdb"
            Dim q As String = "Select * from Rice Where DateReceived =@DateReceived"
            Using cmd As New OleDb.OleDbCommand(q, con)
                cmd.Parameters.Add("@DateReceived", OleDbType.Date).Value = CDate(Form1.ComboBox1.SelectedText)
                con.Open()
                Using Reader As OleDb.OleDbDataReader = cmd.ExecuteReader
                    While Reader.Read
                        'Your code
                    End While
                End Using
            End Using
        End Using
End Sub