在vb.net的where子句中使用datetimepicker
我希望HOLDERS表中的行将DOB作为datetimepicker1 我发布的代码没有返回任何结果在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
Plz帮助。确定问题所需采取的步骤:
- 检查
,是否正确查询的值
- 手动对数据库运行查询,是否返回结果
- 检查
对象是否具有使用ds
ds.Tables[0]的数据。行数是否大于0
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))