Mysql 如何获取帐户中的用户名?
我正在制作一个连接到MySql数据库的VB.Net应用程序。 我的应用程序有许多帐户,每个帐户都有几个用户。我想显示这些信息,但应用程序只显示每个帐户的第一个用户 代码如下:Mysql 如何获取帐户中的用户名?,mysql,vb.net,Mysql,Vb.net,我正在制作一个连接到MySql数据库的VB.Net应用程序。 我的应用程序有许多帐户,每个帐户都有几个用户。我想显示这些信息,但应用程序只显示每个帐户的第一个用户 代码如下: Public Function id(Label2 As String) As Double Using connection = Getconnection() connection.Open() Using commandid = New MySqlCommand
Public Function id(Label2 As String) As Double
Using connection = Getconnection()
connection.Open()
Using commandid = New MySqlCommand
commandid.Connection = connection
commandid.CommandText = "SELECT *FROM player.player
Where player.account_id=" & testString & V
Dim read = commandid.ExecuteReader
If read.HasRows Then
While read.Read
ActivateUser.namecharacter = read.GetString(2)
ActivateUser.job = read.GetString(3)
End While
read.Dispose()
Return True
Else
MessageBox.Show(" no ")
Return False
End If
connection.Close()
connection.Dispose()
End Using
End Using
End Function
如何修复此问题以显示帐户中的所有用户?只需在使用连接的方法中创建连接即可。摆脱
GetConnection
只需为连接字符串使用一个类级变量
在使用之前不要打开连接
通过在第一行末尾添加逗号,可以在同一个using块中包含该命令。命令也需要处理。命令构造函数可以将CommandText
和连接
作为参数
数据库中的account\u id
是什么数据类型?我猜它是字符串类型。V
是变量还是字符串“V”?我要猜一个硬编码字符串。testString
来自哪里?我猜Label2
(可怕的非描述性名称)是teststring
从不为sql连接字符串始终使用参数
读卡器也需要关闭和放置,以便使用块。访问数据库的整个想法是尽快进出。不要设置ActivateUser的属性,也不要显示消息框。用户可能已经去吃午饭了,而您的连接却在微风中飘荡
函数的数据类型为Double
,但返回语句为Boolean
s。不行
无需关闭和处理连接。结束时使用
即可完成此操作
Private ConStr As String = "Your connection string"
Public Function id(Label2 As String) As DataTable
Dim dt As New DataTable
Using connection As New MySqlConnection(ConStr),
commandid As New MySqlCommand("SELECT *FROM player Where account_id= @TestString;", connection)
commandid.Parameters.Add("@TestString", MySqlDbType.VarChar).Value = Label2 & "V"
connection.Open()
Using reader = commandid.ExecuteReader
dt.Load(reader)
End Using
End Using
Return dt
End Function
然后返回用户界面代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dt = id(Label2.Text)
If dt.Rows.Count > 0 Then
ActivateUser.namecharacter = dt(0)(2).ToString
ActivateUser.job = dt(0)(3).ToString
Else
MessageBox.Show(" no ")
End If
End Sub
这可以很好地将从数据库代码中分离出来。请注意,这是SQLi易受攻击的,请始终使用参数。只有一个
ActivateUser
对象。这段代码将结果快速连续地设置为同一个对象,因此我们只能看到最后一个。您需要重新设计您的用户界面,以创建一个显示所有用户的位置,或在其中循环。我们无法帮助您做到这一点,因为我们无法看到您的窗体或屏幕设计。对于多对多解决方案,您可能需要一个连接表。每个帐户在一个表中。每个用户在另一个表中。然后是第三个带有AccountID和UserID的表。谢谢大家的评论和回答,你真的找到了解决方案,我很感谢你。谢谢你仍然只显示了一个用户,但这肯定是要解决的第一个也是最重要的问题。