Vb.net 无法执行if block语句

Vb.net 无法执行if block语句,vb.net,Vb.net,大家好,我正在创建一个登录窗口 (使用MS vb 2008)检查来自sql server(2014)的数据。当我给出任何错误值时,将执行my else块,但当我给出正确值时,将不会执行该块 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ((RadioButton1.Checked = False And Radi

大家好,我正在创建一个登录窗口 (使用MS vb 2008)检查来自sql server(2014)的数据。当我给出任何错误值时,将执行my else块,但当我给出正确值时,将不会执行该块

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    If ((RadioButton1.Checked = False And RadioButton2.Checked = False) Or (TextBox1.Text = "" Or TextBox2.Text = "")) Then
        MessageBox.Show("enter user name/password then select login as user/admin", "error", MessageBoxButtons.OK, MessageBoxIcon.Information)
        TextBox1.Clear()
        TextBox2.Clear()
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        TextBox1.Focus()
    Else
        If ((RadioButton1.Checked = True And RadioButton2.Checked = False) And (TextBox1.Text <> "" And TextBox2.Text <> "")) Then
            Try
                ob.connection()
                Dim sql As String = "select * from password where loger='user0'" + "and (name=" + "'" + TextBox1.Text + "'" + "and password=" + "'" + TextBox2.Text + "')"
                ob.Mydata(sql)
                If ob.dr.Read() Then
                    Dim t, t1, t2 As New TextBox
                    t.Text = ob.dr.Item("name").ToString
                    t1.Text = ob.dr.Item("password").ToString
                    t2.Text = ob.dr.Item("loger").ToString
                    If (TextBox1.Text = t.Text And TextBox2.Text = t1.Text) Then
                        MessageBox.Show("successfully login", "login", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        ' TextBox1.Text = ""
                        TextBox2.Text = ""
                        main.Show()


                        Me.Hide()
                    End If
                Else
                    MessageBox.Show(" invalid userid/password.........", "log in error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    TextBox1.Clear()
                    TextBox2.Clear()
                    RadioButton2.Checked = False
                    TextBox1.Focus()
                End If
            Catch ex As Exception '' getting Sql exception
                MessageBox.Show(ex.Message.ToString())
            Finally
                ob.connection_close()
            End Try
        Else
            If ((RadioButton2.Checked = True And RadioButton1.Checked = False) And (TextBox1.Text <> "" And TextBox2.Text <> "")) Then
                Try
                    ob.connection()
                    Dim sql As String = "select * from password where loger='admin'" + "and (name=" + "'" + TextBox1.Text + "'" + "and password=" + "'" + TextBox2.Text + "')"
                    ob.Mydata(sql)
                    If ob.dr.Read() Then
                        Dim t As New TextBox
                        Dim t1, t2 As New TextBox
                        t.Text = ob.dr.Item("name").ToString
                        t1.Text = ob.dr.Item("password").ToString
                        t2.Text = ob.dr.Item("loger").ToString
                        If (TextBox1.Text = t.Text And TextBox2.Text = t1.Text) And RadioButton2.Text = t2.Text Then
                            MessageBox.Show("successfully login", "login", MessageBoxButtons.OK, MessageBoxIcon.Information)
                            'TextBox1.Text = ""
                            TextBox2.Text = ""
                            main.Show()

                            Me.Hide()
                        End If
                    Else
                        MessageBox.Show(" invalid userid/password......", "login error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        TextBox1.Clear()
                        TextBox2.Clear()
                        RadioButton2.Checked = False
                        TextBox1.Focus()
                    End If
                Catch ex As Exception '' getting Sql exception
                    MessageBox.Show(ex.Message.ToString())
                Finally
                    ob.connection_close()
                End Try
            End If
        End If
    End If
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
Private子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
如果((RadioButton1.Checked=False和RadioButton2.Checked=False)或(TextBox1.Text=”“或TextBox2.Text=”“)则
MessageBox.Show(“输入用户名/密码,然后选择作为用户/管理员登录”,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Information)
TextBox1.Clear()
TextBox2.Clear()
RadioButton1.选中=错误
RadioButton2.选中=错误
TextBox1.Focus()
其他的
如果((RadioButton1.Checked=True,RadioButton2.Checked=False)和(TextBox1.Text“”和TextBox2.Text“”)则
尝试
ob.connection()
Dim sql As String=“从loger='user0'”+“和(name=“+””“+TextBox1.Text+”“+”和password=“+””“+TextBox2.Text+”)的密码中选择*”
ob.Mydata(sql)
如果ob.dr.Read()那么
尺寸t、t1、t2作为新文本框
t、 Text=ob.dr.Item(“名称”).ToString
t1.Text=ob.dr.Item(“密码”).ToString
t2.Text=ob.dr.Item(“记录器”).ToString
如果(TextBox1.Text=t.Text和TextBox2.Text=t1.Text),则
显示(“成功登录”,“登录”,MessageBoxButtons.OK,MessageBoxIcon.Information)
'TextBox1.Text=“”
TextBox2.Text=“”
main.Show()
我躲起来
如果结束
其他的
MessageBox.Show(“无效的用户标识/密码……”、“登录错误”、MessageBoxButtons.OK、MessageBoxIcon.error)
TextBox1.Clear()
TextBox2.Clear()
RadioButton2.选中=错误
TextBox1.Focus()
如果结束
捕获ex作为异常“”获取Sql异常
MessageBox.Show(例如Message.ToString())
最后
ob.connection_close()
结束尝试
其他的
如果((RadioButton2.Checked=True,RadioButton1.Checked=False)和(TextBox1.Text“”和TextBox2.Text“”),则
尝试
ob.connection()
Dim sql As String=“从loger='admin'”+“和(name=“+””“+TextBox1.Text+”“+”和password=“+””“+TextBox2.Text+”)的密码中选择*”
ob.Mydata(sql)
如果ob.dr.Read()那么
将t设置为新文本框
尺寸t1、t2作为新文本框
t、 Text=ob.dr.Item(“名称”).ToString
t1.Text=ob.dr.Item(“密码”).ToString
t2.Text=ob.dr.Item(“记录器”).ToString
如果(TextBox1.Text=t.Text和TextBox2.Text=t1.Text)和RadioButton2.Text=t2.Text
显示(“成功登录”,“登录”,MessageBoxButtons.OK,MessageBoxIcon.Information)
'TextBox1.Text=“”
TextBox2.Text=“”
main.Show()
我躲起来
如果结束
其他的
MessageBox.Show(“无效的用户标识/密码……”,“登录错误”,MessageBoxButtons.OK,MessageBoxIcon.error)
TextBox1.Clear()
TextBox2.Clear()
RadioButton2.选中=错误
TextBox1.Focus()
如果结束
捕获ex作为异常“”获取Sql异常
MessageBox.Show(例如Message.ToString())
最后
ob.connection_close()
结束尝试
如果结束
如果结束
如果结束
端接头
私有子表单1_Load(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
端接头

最终类

首先要解决的问题是:

Dim t As New TextBox
Dim t1, t2 As New TextBox
t.Text = ob.dr.Item("name").ToString
t1.Text = ob.dr.Item("password").ToString
t2.Text = ob.dr.Item("loger").ToString
虽然这可以奏效,但它很混乱,很容易给你造成奇怪的错误。而是使用字符串来存储值

Dim t As String
Dim t1, t2 As String
t = ob.dr.Item("name").ToString
t1 = ob.dr.Item("password").ToString
t2 = ob.dr.Item("loger").ToString

哪一行没有被执行?不要连接sql查询,使用参数。如果密码包含“您将有一个错误。”。另外,如果您的查询使用特定密码(不是散列的?!)检查特定用户,那么我看不出您需要在if语句中再次检查它,单步验证变量的值。正如我在上面声明但问题未解决时u所建议的,如果(TextBox1.Text=t.Text和TextBox2.Text=t1.Text)输入了正确的条目,则该行不会执行然后是MessageBox.Show(“成功登录”,“登录”,MessageBoxButtons.OK,MessageBoxIcon.Information)“TextBox1.Text=”“TextBox2.Text=”“main.Show()Me.Hide()如果您知道如何设置断点并逐步完成代码,请结束。如果您能提供相同的指导,这将是一个很大的帮助。请阅读本文。它表示C++,但是它在所有语言中都是相同的。