我正在尝试从数据库表中选择所有记录。每个记录中都有一个日期,我要选择该日期与今天的日期匹配的所有记录
我创建了一个名为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????
答案 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)"
这会去除日期上的时间,并且包括今天午夜或更晚的任何时间。