在vb.net的where子句中使用datetimepicker

在vb.net的where子句中使用datetimepicker,.net,vb.net,oracle,.net,Vb.net,Oracle,我希望HOLDERS表中的行将DOB作为datetimepicker1 我发布的代码没有返回任何结果 Plz帮助。确定问题所需采取的步骤: 检查查询的值,是否正确 手动对数据库运行查询,是否返回结果 检查ds对象是否具有使用ds.Tables[0]的数据。行数是否大于0 假设DOB是一个日期字段(希望是!) 然后使用TO_DATE,不要尝试比较DATE=string,否则如果不是今天,代码就会失败 Dim con1 As OleDb.OleDbConnection D

我希望HOLDERS表中的行将DOB作为datetimepicker1 我发布的代码没有返回任何结果


Plz帮助。

确定问题所需采取的步骤:

  • 检查
    查询的值
    ,是否正确
  • 手动对数据库运行查询,是否返回结果
  • 检查
    ds
    对象是否具有使用
    ds.Tables[0]的数据。行数是否大于0

假设DOB是一个日期字段(希望是!) 然后使用TO_DATE,不要尝试比较DATE=string,否则如果不是今天,代码就会失败

 Dim con1 As OleDb.OleDbConnection
            Dim cmd As OleDb.OleDbCommand
            Dim query As String


            Dim rs As OleDb.OleDbDataReader
            con1 = New OleDb.OleDbConnection("Provider=MSDAORA.1;Data Source=localhost;Persist Security Info=True;Password=sys;User ID=nitishok")
            con1.Open()


            query = "select * from HOLDERSDB where DOB like '" + DateTimePicker1.Value + "' "
            cmd = New OleDb.OleDbCommand(query, con1)
            cmd.CommandType = CommandType.Text
            rs = cmd.ExecuteReader

            Dim da As New OleDb.OleDbDataAdapter(query, con1)

            Dim ds As New DataSet()
            da.Fill(ds, "HOLDERSDB")
            DataGridView1.DataSource = ds.Tables(0)

            con1.Close()
    enter code here
请参见此处设置DateTimePicker返回的格式

确保将其格式化为与to_DATE函数中的第二个参数相同的格式(不必像我所说的那样是dd mon yyy,Oracle支持多种格式)

此外,出于性能/安全原因,您应该使用绑定变量,而不是将字符串粘贴到SQL中。

一旦使用:

"select * from HOLDERSDB where dob = to_date(" + DateTimePicker1.Value + ", 'dd-mon-yyyy')
因此:

在SQL查询中使用:

Debug.Print(SQLDate(DateTimePicker1.Value)) =====> 20121101
将OLEDBPParameter添加到,而不是在查询中连接。这将减少黑客攻击的可能性,并帮助我插入正确类型的值


而且,我不明白你为什么需要一个类似的声明。也许你应该使用normal=运算符,尤其是当DOB是一个日期时。

可以,你可以检查数据是否在“da”对象中提交。检查数据库中DOB文件的格式(如2012年11月1日或2012年11月1日或包括时间等)。那么最好在DataTimePicker中使用相同的格式。同时检查DateTimePicker1。值返回给您的值非常感谢。它只做了一点修改。。。“从HOLDERSDB中选择*,其中DOB希望指定日期(“+DateTimePicker1.Value.date+”,'dd-mon-yy')
Debug.Print(SQLDate(DateTimePicker1.Value)) =====> 20121101
String.Format("... WHERE DOB = '{0}'", SQLDate(DateTimePicker1.Value))