在我创建新用户的表单中,我希望它验证用户名是否已存在,然后在注册按钮中输入以下代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim Inserir As String = "INSERT INTO `techstorehunter`.`utilizadores`(`Username`,`Password`,`pergunta`,'resperg')VALUES('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & ComboBox1.Text & "')"
ExecuteQuery(Inserir)
Catch
MessageBox.Show("Username already exists")
End Try
If TextBox1.Text = "" Then
MessageBox.Show("Insert a username")
End If
If TextBox2.Text = "" Then
MessageBox.Show("Insert a password")
End If
If TextBox3.Text = "" Then
MessageBox.Show("You need to answer a question")
End If
If ComboBox1.Text = "" Then
MessageBox.Show("You need to select a question")
End If
End Sub
但是每次我创建一个用户时它都会说它已经存在,即使不存在,我能做什么?谢谢。
PS:“Inserir”的意思是“插入”,但我的语言是葡萄牙语。
最佳答案
您的代码存在几个问题:
首先,在运行 sql 查询之后验证输入:您应该首先验证,如果一切顺利,则执行 INSERT,否则您将面临向数据库插入哑数据,或者输入不完整时收到“用户已存在”警告
此外,您还可以捕获所有数据库错误并将其解释为“用户已存在”;通过这种方式,您可能会隐藏除重复用户记录之外的其他数据库错误。正确的操作方法是:
- 表单验证后,使用如下查询检查现有用户,其中问号应替换为提交的用户名。如果查询返回任何内容,那么您肯定知道有重复的用户,并且您可以发出适当的警告并停止处理。
SELECT 1 FROM `techstorehunter`.`utilizadores` WHERE `Username` = ?
如果第一个查询没有返回任何内容,您可以运行 INSERT 语句
每次运行查询时,您都希望捕获错误,使用完整的错误消息报告错误,然后中止处理
关于mysql - 验证用户名是否已存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019973/