Vb.net 请填写必填字段消息框

Vb.net 请填写必填字段消息框,vb.net,messagebox,Vb.net,Messagebox,我正在尝试执行一个“请填写必填字段””消息框。 Tt确实会出现,但每当我尝试在文本框中输入一个字符或单击两个单选按钮中的一个时,在出现“请填写必填字段””之后,也会弹出“已创建帐户”。 此外,当字段为空时,将显示“用户已存在!”,而不是“请填写必填字段”” 谁能告诉我我的密码有什么问题吗 谢谢你 Public Class CreateAccount Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As S

我正在尝试执行一个“
请填写必填字段”
”消息框。 Tt确实会出现,但每当我尝试在文本框中输入一个字符或单击两个单选按钮中的一个时,在出现“
请填写必填字段”
”之后,也会弹出“已创建帐户”。 此外,当字段为空时,将显示“
用户已存在!
”,而不是“
请填写必填字段”

谁能告诉我我的密码有什么问题吗

谢谢你

Public Class CreateAccount

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

            Try
                Using conn = New System.Data.OleDb.OleDbConnection()
                    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                            "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Thesis\Thesis\Database2.accdb"


                    Dim sql As String = "INSERT INTO tbl_user (username, [password],facultymember,student) " & _
                                        "VALUES (@uname, @pwd,@fmem,@stud)"
                    Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql, conn)
                    sqlCom.Parameters.AddWithValue("@uname", TextBox1.Text)
                    sqlCom.Parameters.AddWithValue("@pwd", TextBox2.Text)
                    sqlCom.Parameters.AddWithValue("@fmem", RadioButton1.Checked)
                    sqlCom.Parameters.AddWithValue("@stud", RadioButton2.Checked)

                    conn.Open()

                    Dim strUsername As String = TextBox1.Text
                    Dim boolUsernameExists As Boolean = False

                    Using dbConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Thesis\Thesis\Database2.accdb")
                        dbConnection.Open()
                        Using dbCommand As New System.Data.OleDb.OleDbCommand("select count(username) from tbl_user where username like ?", dbConnection)
                            dbCommand.Parameters.AddWithValue("@uname", strUsername)
                            Dim result As Integer = DirectCast(dbCommand.ExecuteScalar(), Integer)
                            If result > 0 Then
                                boolUsernameExists = True
                            End If
                        End Using
                        dbConnection.Close()
                    End Using

                    If boolUsernameExists Then
                        MessageBox.Show("Username already exists!")
                        Return
                End If
                Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

                conn.Close()

                If TextBox1.Text = "" Or TextBox2.Text = "" Or RadioButton1.Checked = False Or RadioButton2.Checked = False Then
                    MessageBox.Show("Please complete the required fields.", "Authentication Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If

                RadioButton1.Checked = False
                RadioButton2.Checked = False

                TextBox1.Text = ""
                TextBox2.Text = ""

                MessageBox.Show("Account created successfully!")

                Me.Hide()
                LoginUser.Show()


            End Using

            Catch ex As Exception
                MessageBox.Show("Error:" & ex.Message)
            End Try

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.Hide()
        LoginUser.Show()
    End Sub

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

    End Sub

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub


    Private Sub Textbox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        Dim KeyAscii As Short = Asc(e.KeyChar)
        Select Case KeyAscii
            Case System.Windows.Forms.Keys.Back  '<--- this is for  backspace
            Case 13
                e.Handled = True
                SendKeys.Send("{TAB}")   '<---- use to tab to next textbox or control
                KeyAscii = 0
            Case Is <= 32
                ' KeyAscii = 0
            Case 48 To 57     '<--- this is for numbers 
                Exit Sub
            Case 65 To 90     '<--- this is for Uppercase Alpha 
                Exit Sub
            Case 97 To 122     '<--- this is for Lowercase Alpha 
                Exit Sub
            Case Else
                e.Handled = True
                MessageBox.Show("You can only input letters and numbers!", "Create Account")
        End Select
    End Sub

    Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged

    End Sub
End Class
公共类CreateAccount
私有子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
尝试
使用conn=New System.Data.OleDb.OleDbConnection()
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;”_
“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\Thesis\Thesis\Database2.accdb”
Dim sql As String=“插入tbl_用户(用户名、[密码]、教员、学生)”和_
“值(@uname、@pwd、@fmem、@stud)”
Dim sqlCom作为新的System.Data.OleDb.OleDbCommand(sql,conn)
sqlCom.Parameters.AddWithValue(“@uname”,TextBox1.Text)
sqlCom.Parameters.AddWithValue(“@pwd”,TextBox2.Text)
sqlCom.Parameters.AddWithValue(“@fmem”,RadioButton1.Checked)
sqlCom.Parameters.AddWithValue(“@stud”,RadioButton2.选中)
康涅狄格州公开赛
Dim strUsername作为字符串=TextBox1.Text
Dim boolUsernameExists为Boolean=False
使用dbConnection作为新的System.Data.OleDb.OleDbConnection(“Provider=Microsoft.ACE.OleDb.12.0;数据源=C:\Thesis\Thesis\Database2.accdb”)
dbConnection.Open()
将dbCommand用作新的System.Data.OleDb.OleDbCommand(“从tbl_user where username like?”中选择count(username),dbConnection)
dbCommand.Parameters.AddWithValue(“@uname”,strUsername)
Dim结果为Integer=DirectCast(dbCommand.ExecuteScalar(),Integer)
如果结果>0,则
boolUsernameExists=真
如果结束
终端使用
dbConnection.Close()
终端使用
如果布卢塞纳人存在的话
显示(“用户名已存在!”)
回来
如果结束
Dim sqlRead As System.Data.OleDb.OleDbDataReader=sqlCom.ExecuteReader()
康涅狄格州关闭
如果TextBox1.Text=“”或TextBox2.Text=“”或RadioButton1.Checked=False或RadioButton2.Checked=False,则
Show(“请填写必填字段。”,“身份验证错误!”,MessageBoxButtons.OK,MessageBoxIcon.Error)
如果结束
RadioButton1.选中=错误
RadioButton2.选中=错误
TextBox1.Text=“”
TextBox2.Text=“”
MessageBox.Show(“帐户创建成功!”)
我躲起来
LoginUser.Show()
终端使用
特例
MessageBox.Show(“错误:&ex.Message”)
结束尝试
端接头
私有子按钮2\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮2。单击
我躲起来
LoginUser.Show()
端接头
私有子表单2_Load(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
端接头
私有子TextBox1_TextChanged(发送方作为System.Object,e作为System.EventArgs)处理TextBox1.TextChanged
端接头
私有子textbox2keypress(ByVal发送者作为对象,ByVal e作为System.Windows.Forms.KeyPressEventArgs)处理Textbox2.KeyPress
Dim KeyAscii短=Asc(例如KeyChar)
选择大小写键ASCII

Case System.Windows.Forms.Keys.Back'您真的应该看看Button1\u click sub的逻辑,因为它真的很难理解

  • 你打开数据库两次了吗
  • 您已经插入了用户名为“”、密码为“”的用户,这就是为什么您在未输入任何内容时会收到“用户存在”消息的原因
  • 帐户创建成功!始终在请填写必填字段后显示,因为字段缺失时没有检查/返回/任何内容

不知道为什么每次击键时都会调用DB Insert,因为在您发布的内容中没有相应的代码

我同意DavidDOT的观点,您的代码出现了问题

下面是一个可能有效的示例。我说可能是因为我不太擅长vb.net。因此,您可能需要更改一些内容以使其正常工作。然而,尽管如此,以下内容可能会对正确的顺序有帮助

Try
        Using conn = New System.Data.OleDb.OleDbConnection()
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Thesis\Thesis\Database2.accdb"

            If ((TextBox1.Text <> "" And TextBox2.Text <> "") And (RadioButton1.Checked <> False Or RadioButton2.Checked <> False)) Then
                conn.Open()
                Using dbCommand As New System.Data.OleDb.OleDbCommand("select count(username) from tbl_user where username like ?", conn)
                    dbCommand.Parameters.AddWithValue("@uname", TextBox1.Text)
                    Dim result As Integer = DirectCast(dbCommand.ExecuteScalar(), Integer)
                    If result = 0 Then
                        Dim sql As String = "INSERT INTO tbl_user (username, [password],facultymember,student) " & _
                                "VALUES (@uname,@pwd,@fmem,@stud)"
                        Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql, conn)
                        sqlCom.Parameters.AddWithValue("@uname", TextBox1.Text)
                        sqlCom.Parameters.AddWithValue("@pwd", TextBox2.Text)
                        sqlCom.Parameters.AddWithValue("@fmem", RadioButton1.Checked)
                        sqlCom.Parameters.AddWithValue("@stud", RadioButton2.Checked)

                        Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

                        RadioButton1.Checked = False
                        RadioButton2.Checked = False

                        TextBox1.Text = ""
                        TextBox2.Text = ""

                        MessageBox.Show("Account created successfully!")

                        Me.Hide()
                        LoginUser.Show()
                    Else
                        MessageBox.Show("Username already exists!")
                        Return
                    End If
                End Using
            Else
                MessageBox.Show("Please complete the required fields.", "Authentication Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If

            conn.Close()
        End Using
    Catch ex As Exception
        MessageBox.Show("Error:" & ex.Message)
    End Try
试试看
使用conn=New System.Data.OleDb.OleDbConnection()
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;”_
“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\Thesis\Thesis\Database2.accdb”
如果((TextBox1.Text“”和TextBox2.Text“”)和(RadioButton1.Checked False或RadioButton2.Checked False)),则
康涅狄格州公开赛
使用dbCommand作为新的System.Data.OleDb.OleDbCommand(“从tbl\U用户中选择count(username),用户名像什么?”,conn)
dbCommand.Parameters.AddWithValue(“@uname”,TextBox1.Text)
Dim结果为Integer=DirectCast(dbCommand.ExecuteScalar(),Integer)
如果结果=0,则
Dim sql As String=“插入tbl_用户(用户名,[密码],facultymember,s