【问题标题】:Displaying multiple pieces of data from a database, and display it in one text box [closed]显示数据库中的多条数据,并将其显示在一个文本框中[关闭]
【发布时间】:2018-09-30 05:35:18
【问题描述】:

我正在制作一个游戏,并且想在一个文本框中显示所有学生的结果(或者可以显示它)

在我的数据库中,我有一个名为用户名的字段。每次游戏结束时,这都会添加相同的用户名作为新记录,其中也包含分数。问题是,我似乎只能显示最新的分数。我将如何在一个框中显示一名学生的所有结果。另外,我将如何用逗号分隔它们?谢谢

Imports System.Data.OleDb
' Accesses my database, and checks whether the teacher is in the database '
Public Class RetrieveResults
    Dim provider As String
    Dim dataFile As String
    Dim connString As String
    Public myConnection As OleDbConnection = New OleDbConnection
    Public dr As OleDbDataReader
    Private Sub Retrieveresults_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
        dataFile = "D:\Student Database1.accdb"
        connString = provider & dataFile
        myConnection.ConnectionString = connString
    End Sub

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    myConnection.Open()
    surname.Clear()
    Classs.Clear()
    Score.Clear()
    Dim str As String
    str = "SELECT * FROM [SCORE] WHERE (Student_UserName = '" & Student_name.Text & "')"
    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
    dr = cmd.ExecuteReader
    While dr.Read()
        surname.Text = dr("Student_Username").ToString
        Classs.Text = dr("class").ToString
        Score.Text = dr("score").ToString
    End While
    myConnection.Close()
End Sub

End Class

【问题讨论】:

  • 没有代码很难帮助
  • 您尝试了哪些方法,哪些方法不起作用? “我如何显示数据”通常回答为“通过编写代码来做到这一点”。你写了什么代码,你卡在哪里了?
  • 抱歉,这是在我的手机上完成的,但现在我有代码了:
  • 请阅读How to Ask 并使用tour 了解如何有效地使用该网站。作为回报,您需要在帖子上花费至少尽可能多的时间 - 例如,将代码格式化为看起来像代码。永远不要将数据和文本粘合在一起来创建 SQL。从不

标签: sql vb.net sorting ms-access


【解决方案1】:
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            surname.Clear()
            Classs.Clear()
            Score.Clear()
            Dim str As String = "SELECT * FROM [SCORE] WHERE (Student_UserName = @StudentName);"
            Using myConnection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source =D:\Student Database1.accdb")
                Using cmd As OleDbCommand = New OleDbCommand(str, myConnection)
                    cmd.Parameters.Add("@StudentName", OleDbType.VarChar).Value = Student_name.Text
                    myConnection.Open()
                    Using dr As OleDbDataReader = cmd.ExecuteReader
                        While dr.Read()
                            Classs.Text &= dr("class").ToString & ", "
                            Score.Text &= dr("score").ToString & ", "
                        End While
                    End Using
                End Using
            End Using
            surName.Text = Student_name.Text
End Sub
  1. 我直接在 Connection 构造函数中传递了连接字符串,而不是所有字符串。我将表单级别的变量移到了按钮事件中。
  2. 我在 Connection、Command 和 DataReader 上使用了 Using ...End Using 语句,以确保即使出现错误也能正确处理它们。
  3. 我将 Select 语句更改为使用参数。 Access 并不关心你如何称呼它,只要它以与 SQL 语句中相同的顺序添加参数即可。这里没有问题,因为只有一个。
  4. 我将 surName 从 Whiile 循环中取出,应该只有一个值。
  5. 我在等号之前添加了一个 &,因此循环会将下一个值添加到文本框,并且我在每次迭代中添加了逗号 我希望这会有所帮助。

【讨论】:

  • 谢谢!完全按照我的意愿去做!
猜你喜欢
  • 2013-03-23
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多