我不知道这个代码,因为如果条件为真,msgbox会出现,但如果条件为false,则msgbox不会出现。任何人都可以提出一些想法。这是代码
Dim cnnOLEDB As New OleDbConnection(strConnectionString)
sql = "SELECT * FROM Spec WHERE Category='1BK' IN ( Silo = '" & txtBin.Text & "' AND WheatType = '" & ddlType.Text & "')"
cmd = New OleDbCommand(sql, cnnOLEDB)
cnnOLEDB.Open()
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader()
'If dt.Rows.Count > 0 Then
While dr.Read()
If ddlType.Text = dr("WheatType") Then
MsgBox("OK")
Else
MsgBox("Wrong")
End If
End While
答案 0 :(得分:1)
如果WheatType不在数据库中,您将永远不会看到“错误”消息,因为在这种情况下,对dr.Read()的第一次调用将返回False ...将没有记录,并且您的{{ 1}}条件永远不会被评估。
不仅如此,我们还有一个严重的安全问题。你一定不能使用字符串连接将用户输入的数据放入你的sql命令中。
请改为尝试:
If ddlType.Text = dr("WheatType")
答案 1 :(得分:0)
试试这个:
While dr.Read()
If ddlType.Text = dr("WheatType").ToString() Then
MsgBox("OK")
Else
MsgBox("Wrong")
End If
End While
答案 2 :(得分:0)
您是否经过测试以确保
ddlType.Text = dr(“WheatType”)
对于表格中的每一行都不是真的吗?
答案 3 :(得分:0)
如果数据库中不存在搜索字符串,那么dr.Read()中的代码无效,因为dr为空。所以你必须像这样改变你的代码
Dim Found As Boolean = False
While dr.Read()
If ddlType.Text = dr("WheatType") Then
MsgBox("OK")
Found = True
End If
End While
If Found = False Then
MsgBox("Wrong")
End If
答案 4 :(得分:0)
尝试使用String.Compare和Trim:
String.Compare(ddlType.Text.Trim(), dr("WheatType").ToString().Trim(), True)
如果这不起作用,我想这些值不相等。
祝你好运。