Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 没有参数的SQL选择?_Vb.net - Fatal编程技术网

Vb.net 没有参数的SQL选择?

Vb.net 没有参数的SQL选择?,vb.net,Vb.net,我正在尝试从数据库表中选择所有记录。每个记录中都有一个日期我想选择该日期与今天日期匹配的所有记录 我创建了一个名为todaydate的变量,并在查询中使用了它,但没有为一个或多个必需的错误参数提供值。我将使用哪些可能的参数 这是密码 任何帮助都将不胜感激 Dim todaydate As Date = Date.Today() If DbConnect() Then Dim SQLCmd As New OleDbCommand With SQLCm

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

我创建了一个名为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????

您需要实际使用变量,而不是将其作为字符串的一部分。试试这个:

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

您没有使用该变量。但是,您应该始终使用sql参数而不是串接字符串。原因之一:避免sql注入。我还建议对连接和实现IDisposable的所有其他内容使用Using语句:


如果它总是Date,那么今天也可以不用参数,因为每个数据库都有返回当前日期的Date函数。但是,由于您没有告诉我们您使用的是哪一个DB,因此很难给出一个示例。

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

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

这会减少日期的时间,包括今天午夜或之后的任何内容。

根据您使用的数据库,语法会有所不同,但始终有今天的日期函数或系统变量可用。例如,在oracle中,您将使用sysdate。否则,您需要将该日期添加为参数或将其串联。不过,不要将其串联,因为没有其他选项。发布您正在使用的数据库,您可能会得到查询当前日期的更具体的解决方案。我不确定为什么会有答案建议您添加日期参数或使用字符串concat,查询与今天日期匹配的记录也不必这样做。对于oracle,查询将只是从Tbl_Rent中选择*其中DateOther=truncsysdate,或者对于sql server,从Tbl_Rent中选择*其中DateOther=convertdate,getdate。我得到一个数据不匹配错误?这是因为在数据库中,DateOfHire的数据类型是日期/时间,而todaydate是字符串吗?请使用todaydate的ToString方法。看我对答案的编辑。不,这似乎也不起作用。如果我把todaydate改成一个不能正常工作的字符串,因为DateOfHire是一个日期?事实上,你应该使用“ToShortDateString”,然后它至少在SQL Server上可以正常工作。事实上,我想我发现了这个问题,当调试todaydate=10/25/18时,我的数据库中的DateOfHi是25/10/18,所以其中一个是美国的。代码中是否有任何解释?
.CommandText = "Select * from Tbl_Rental Where DateOfHire >= cast(getdate() as date)"