SQL Server 使用循环在文本框中显示所有Listview数据

mv1qrgav  于 2022-11-21  发布在  其他
关注(0)|答案(2)|浏览(141)
Dim Mysqlconn = New SqlConnection
    Mysqlconn.ConnectionString = "Data Source=DESKTOP-D32ONKB;Initial Catalog=Attendance;Integrated Security=True"

    Dim dt As DataTable = New DataTable("studentdata")

    Mysqlconn.Open()

    Dim query As String
    query = "select ID from studentdata where Class='" & ComboBox1.Text & "'"

    Dim Command = New SqlCommand(query, Mysqlconn)
    Dim dr = Command.ExecuteReader(CommandBehavior.CloseConnection)

    ListView1.Items.Clear()
    Dim x As ListViewItem

    Do While dr.Read = True
        x = New ListViewItem(dr("ID").ToString)
        ListView1.Items.Add(x)
    Loop

    For i = 0 To ListView1.Items.Count - 1
        TextBox1.Text = ListView1.Items(i).SubItems(0).Text
    Next

在这段代码中,Textbox1显示的是Listview1中的最后一行。我的要求是将Listview1中的所有数据一个接一个地显示在textbox1中。是否可以使用循环在textbox1中显示从Listview1中读取的所有数据。谢谢...

xmq68pz9

xmq68pz91#

一个文本框一次只能保存一个字符串。如果它被设置为允许多行字符串(问题中没有明确说明),你可以用换行符分隔每一项。否则,你可以用逗号之类的分隔符分隔字符串。

Dim query As String = "select ID from studentdata where Class= @class"
Using conn As New SqlConnection("Data Source=DESKTOP-D32ONKB;Initial Catalog=Attendance;Integrated Security=True"), _
      cmd  As New SqlCommand(query, conn)

    cmd.Parameters.Add("@class", SqlDbType.NVarChar, 20).Value =  ComboBox1.Text
    conn.Open()
    Using dr As SqlDataReader = cmd.ExecuteReader()
        While dr.Read()
            ListView1.Items.Add(New ListViewItems(dr("ID").ToString()))
        End While
    End Using
End Using

TextBox1.Text = String.Join(",", ListView1.Items.Select(Function(i) i.SubItems(0).Text))

还要注意我是如何使用查询参数在SQL命令中包含组合框值的。其他任何事情都会给你带来麻烦,通常是迟早的事。

ehxuflar

ehxuflar2#

使用 as 循环 , 正确 的 方式 应该 是 这样 :

Dim lines As New List(Of String)

For i = 0 To ListView1.Items.Count - 1
    lines.Add(ListView1.Items(i).Text)
Next

TextBox1.Lines = lines.ToArray()

中 的 每 一 个
你 不能 一直 把 Text 属性 设置 为 一 个 新 值 , 然后 期望 旧 值 毫无 理由 地 一直 挂 在 那里 。 你 可以 每次 都 追加 到 Text , 但是 这样 效率 很 低 。 正确 的 方法 是 创建 一 个 值 列表 , 将 其 转换 为 String 数组 , 然后 将 其 赋 给 Lines 属性 。
请 注意 , 获取 第 一 个 子 项 的 Text 是 没有 意义 的 , 因为 它 与 该项 的 Text 相同 。

相关问题