我正在开发一个项目,需要阻止在数据库中插入双用户名,我的代码如下所示:
Command = New MySqlCommand("Select * From userscanner", Connection)
Command.ExecuteNonQuery()
Dim dr As MySqlDataReader
dr = Command.ExecuteReader
With dr
.Read()
Dim check As String = .Item(1)
.Close()
If check = txtbox_username.Text Then
MsgBox("Username Already Taken")
Exit Sub
我的问题是它只获得1列,还是有其他方法可以阻止我的数据库中的双用户名?
我需要用户名栏中的所有列。我正在使用VB和MySQL。
答案 0 :(得分:3)
您应该询问您的数据库是否存在特定的用户名。 这可以使用WHERE子句
来完成 Dim sqlText = "SELECT 1 FROM userscanner WHERE username = @name"
Using Command = New MySqlCommand(sqlText, Connection)
Command.Parameters.Add("@name", MySqlDbType.VarChar).Value = txtbox_username.Text
Dim result = Command.ExecuteScalar()
if result IsNot Nothing Then
MsgBox("Username Already Taken")
End If
End Using
这里我假设您的名为userscanner
的数据库表有一个名为username
的字段(由您的代码用Item(1)检索的字段),您存储用户名。如果存在记录,则添加WHERE条件和简单返回1允许使用简单ExecuteScalar,如果存在与文本框值匹配的记录,则返回值1,如果没有记录,则返回Nothing
答案 1 :(得分:-1)
我自己找到了问题的答案。
Command = New MySqlCommand("Select * From userscanner WHERE Username = '" & txtbox_username.Text & "'", Connection)
Command.ExecuteNonQuery()
Dim dr As MySqlDataReader
dr = Command.ExecuteReader
dr.Read()
dr.Close()
If dr.HasRows Then
MsgBox("Username Already Taken")
感谢帮助人员