我对编码很陌生。我正试图在2019年中用MySQL 8创建一个登录表单,请任何人帮我找出我的代码有什么问题。当我运行代码时,它执行MsgBox(“1010的双式Entry...Contact客户服务”),并给出以下错误。
'MySql.Data.MySqlClient.MySqlException:您的SQL语法出现了错误;请检查与MySQL服务器版本相对应的手册,以获得在第1行“MySQL=‘MySql.Data.MySqlClient.MySqlException’和名称=‘Demeth’和Pin Code=‘1234’附近使用的正确语法
我对此表示怀疑;在employee.empde的末尾,在MySQL查询中,但是当我删除它时,MsgBox(“登录失败!”)将被执行。
这是我的完整密码。谢谢。
Imports MySql.Data.MySqlClient
Public Class Form1
Public cmd As MySqlCommand
Private Sub btnSign_Click(sender As Object, e As EventArgs) Handles btnSign.Click
Dim conn As MySqlConnection
conn = New MySqlConnection
conn.ConnectionString = "server=localhost;user id=demeth;Password=*****;database=employeeinfo"
Dim rdr As MySqlDataReader
Dim qry As String
Try
conn.Open()
qry = "SELECT * FROM employeeinfo.empde; Where Title='" & cmbTitle.Text & "' and Name='" & txtName.Text & "' and Pin Code='" & txtPin.Text & "'"
cmd = New MySqlCommand(qry, conn)
rdr = cmd.ExecuteReader
Dim count As Integer
count = 0
While rdr.Read
count += 1
End While
If count = 1 Then
MsgBox("Connected Successfully", MsgBoxStyle.Information, "Login Successful")
ElseIf count > 1 Then
MsgBox("Dublicate Entry...Contact Costumer Service at 1010", MsgBoxStyle.Critical)
Else
MsgBox("Invalid Name/Pin Code. Try again", MsgBoxStyle.Critical)
End If
Catch ex As MySqlException
MsgBox("Login Failed!", MsgBoxStyle.Critical)
conn.Close()
Finally
conn.Dispose()
End Try
End Sub
End Class发布于 2022-03-11 17:21:37
关于您的查询
qry = "SELECT * FROM employeeinfo.empde; Where Title=表名后面有一个“;”。把它移开。
qry = "SELECT * FROM employeeinfo.empde Where Title=另外:字段PinCode上有一个空格。把它也移开。
发布于 2022-03-11 17:30:57
这将解决原版本中的几个问题:
Private Sub btnSign_Click(sender As Object, e As EventArgs) Handles btnSign.Click
Dim count As Integer = 0
Dim qry As String =
"SELECT COUNT(*)
FROM employeeinfo.empde
WHERE Title= @Title
AND Name = @Name
AND `PIN Code`= @PIN;"
Using conn As New MySqlConnection("server=localhost;user id=demeth;Password=*****;database=employeeinfo"), _
cmd As New MySqlCommand(qry, conn)
cmd.Parameters.AddWithValue("@Title", cmbTitle.Text)
cmd.Parameters.AddWithValue("@Name", txtName.Text)
cmd.Parameters.AddWithValue("@PIN", txtPIN.Text)
Try
conn.Open()
count = CInt(cmd.ExecuteScalar())
Catch Ex As MySqlException
MsgBox($"Login Failed!{vbCrLf}{Ex.Message}", MsgBoxStyle.Critical)
End Try
End Using
If count = 1 Then
MgBox("Connected Successfully", MsgBoxStyle.Information, "Login Successful")
ElseIf count > 1 Then
MsgBox("Dublicate Entry...Contact Costumer Service at 1010", MsgBoxStyle.Critical)
Else
MsgBox("Invalid Name/Pin Code. Try again", MsgBoxStyle.Critical)
End If
End Sub问题仍然存在(这是一个很大的问题!)在它出现的地方,PIN代码存储在纯文本中。
发布于 2022-03-11 17:24:31
qry公式是错误的。您应该删除字符串中的分号。另外,问题的提法也没有得到很好的界定。Ps。正如一条评论所指出的,这段代码容易受到SQL注入的影响。你应该检查一下。如果这是一个自我学习的项目,你不应该太在意。
https://stackoverflow.com/questions/71442322
复制相似问题