我已经完成了数据验证。因此,当没有输入正确的数据时,它将显示一个显示错误的消息框,但同时也显示了以下要阻止或隐藏该消息框的消息框。这是下面的代码。请告诉我我的错误并提供解决方案。谢谢
Dim digit As Integer
Dim text As String
Try
digit = CInt(txtsid.Text) & CInt(txtsph.Text)
Text = CStr(txtsfn.Text) & CStr(txtsln.Text) & CStr(txtsem.Text) & CStr(txtint.Text)
Catch ex As Exception
MessageBox.Show("Please Type In A Proper Information")
End Try
Dim result As Integer = MessageBox.Show("Are you sure you want to proceed?", "Proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = DialogResult.Yes Then
cmdInsert.CommandText = "Insert into student Values(" + txtsid.Text + ",'" + txtint.Text + "','" + txtsfn.Text + "','" + txtsln.Text + "', '" + cmbgen.Text + "', " + txtsph.Text + ", '" + txtsem.Text + "');"
cmdInsert.CommandType = CommandType.Text
cmdInsert.Connection = cnnOLEDB
cmdInsert.ExecuteNonQuery()
UserHomepage.Show()
Me.Hide()
ElseIf result = DialogResult.No Then
Me.Show()
UserHomepage.Hide()
End If
End Sub
答案 0 :(得分:0)
只需Return
or Exit Sub
即可退出Sub
:
Try
digit = CInt(txtsid.Text) & CInt(txtsph.Text)
Text = CStr(txtsfn.Text) & CStr(txtsln.Text) & CStr(txtsem.Text) & CStr(txtint.Text)
Catch ex As Exception
MessageBox.Show("Please Type In A Proper Information")
Return ' --- here
End Try
这将结束整个Sub
(函数,方法,无论您想在VB中调用什么)的执行,并将控制权交还给调用者。
注意:有一种更好的方法来完成您要尝试的操作。不应将异常用于逻辑流。解析整数是逻辑流程。与其使用CInt()
和检查异常,不如看看Int32.TryParse()
。例如:
Dim sid As Int32
Dim result As Boolean = Int32.TryParse(txtsid.Text, sid)
If Not result
' show error
End If
它可能最终是 more 代码,但这并不是一件坏事。它仍然是更好的代码。
我认为您不需要在已经是字符串的东西上调用CStr()
...
也请注意::您的代码对名为SQL Injection的东西开放。看一下how (and why) to create Parameterized Queries(在其他通常称为“预备语句”的环境中)。基本上,虽然您当前将用户输入作为代码执行,但是应该将用户输入仅作为值。