以我创建新用户的形式,我希望它验证用户名是否已经存在,然后在注册按钮中输入以下代码:
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”的意思是“ Insert”,但我的语言是葡萄牙语。
答案 0 :(得分:2)
您的代码有几个问题:
首先,在运行sql查询后验证输入 :应该首先进行验证,如果一切顺利,则执行INSERT,否则,您将暴露于将哑数据插入数据库中,或者输入不完整会收到“用户已存在”警告
此外,您还捕获了所有数据库错误并将其解释为“用户已存在”;通过这种方式,您可能会隐藏其他数据库错误,而不是重复的用户记录。正确的进行方法是:
SELECT 1 FROM `techstorehunter`.`utilizadores` WHERE `Username` = ?
如果第一个查询什么都不返回,则可以运行INSERT语句
每次运行查询时,您都想捕获错误,用完整的错误消息报告错误,并中止处理