SQL选择没有参数?

时间:2018-10-25 14:28:49

标签: vb.net

我正在尝试从数据库表中选择所有记录。每个记录中都有一个日期,我要选择该日期与今天的日期匹配的所有记录

我创建了一个名为todaydate的变量,并在查询中使用了它,但是我没有为一个或多个必需参数错误提供任何值。我将使用什么可能的参数

这是代码 任何帮助将不胜感激

    Dim todaydate As Date = Date.Today()
    If DbConnect() Then
        Dim SQLCmd As New OleDbCommand
        With SQLCmd
            .Connection = cn
            .CommandText = "Select * from Tbl_Rental Where DateOfHire = todaydate"

            'parameters????

3 个答案:

答案 0 :(得分:8)

您没有使用该变量。但是,应始终使用sql参数而不将字符串连接起来(一个原因:避免使用SQL注入)。我还建议对连接以及实现Using的所有其他操作使用IDisposable语句:

Using cn As New OleDbConnection(connectionString)
    cn.Open()
    Using cmd As New OleDbCommand("Select * from Tbl_Rental Where DateOfHire = @DateOfHire", cn)
        dim hireDateParameter As new OleDbParameter("@DateOfHire", OleDbType.Date)
        hireDateParameter.Value = Date.Today
        cmd.Parameters.Add(hireDateParameter)
        ' ... '
    End Using
End Using 

如果始终为Date.Today,则无需参数也可以执行此操作,因为每个数据库都有返回当前日期的日期函数。但是由于您尚未告诉我们您使用的是哪个数据库,因此很难显示示例。

答案 1 :(得分:1)

您需要实际使用变量,而不要将其包含在字符串中。试试这个:

.CommandText = "Select * from Tbl_Rental Where DateOfHire = '" & todaydate.ToString("dd/MM/yy") & "'"

答案 2 :(得分:0)

从稍微不同的角度来看,日期仅仅是“比昨天大”就足够了吗?

.CommandText = "Select * from Tbl_Rental Where DateOfHire >= cast(getdate() as date)"

这会去除日期上的时间,并且包括今天午夜或更晚的任何时间。