从 SQLTable 到列表框的 ItemName 及其到文本框的值

ItemName to Listbox from SQLTable and its value to textboxes

我想将 ItemName 从 sql table 加载到 Listbox 并获取 ItemIdItemNameDetails 值到文本框。

到目前为止,我每次打开或加载 window 时都会收到此代码,它会在列表框中显示 itemName。哪个好

Dim cmd As New SqlCommand("select * FROM Items")
cmd.Connection = connection
Dim adp As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
adp.Fill(dt)
ListBox1.DataSource = dt
ListBox1.DisplayMember = "ItemName"

但问题是: 如果我单击列表框中的一项,它会自动在 sql table 的文本框中显示 itemId、ItemName 和详细信息,我该怎么办?我需要协助。谢谢!

要将 ListBox 项目的选择与 TextBox 同步,请使用 BindingSource。当您将 DataBindings 添加到 TextBox 时,您将传递要绑定到的 属性 的名称、BindingSource 变量和 DataMember(列名)你想绑定。

大多数数据库对象都需要释放。 ConnectionCommandDispose 个方法需要调用。幸运的是 vb.net 提供了 Using...End Using 块来为我们处理这个问题。这也将关闭连接。连接应该在使用它们的方法中用 Using 块声明,以便它们可以被释放。

您不需要 DataAdapter。只需使用 DataReader 并加载 DataTable.

您可以将连接字符串直接传递给连接的构造函数。您还可以将 CommandTextConnection 传递给 Command.

的构造函数
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim dt = GetDataFromSql()
    Dim BndSrc As New BindingSource()
    BndSrc.DataSource = dt
    ListBox1.DisplayMember = "ItemName"
    ListBox1.DataSource = BndSrc
    TextBox1.DataBindings.Add("Text", BndSrc, "ItemID")
    TextBox2.DataBindings.Add("Text", BndSrc, "ItemName")
    TextBox3.DataBindings.Add("Text", BndSrc, "Details")
End Sub

Private Function GetDataFromSql() As DataTable
    Dim dt As New DataTable
    Using connection As New SqlConnection("Your connection string"),
            cmd As New SqlCommand("select * FROM Items", connection)
        connection.Open()
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
    Return dt
End Function

Private Sub Form3_Load(sender As Object, e As EventArgs) 句柄 MyBase.Load

    con = New SqlConnection("ConnectionString")

    con.Open()

    cmd = New SqlCommand("select * from [dbo].[Item_Details]", con)

    rdr = cmd.ExecuteReader()

    While rdr.Read

        ListBox1.Items.Add(rdr(1))

    End While
    con.Close()
End Sub

Private Sub ListBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseClick

    Try
       
        con = New SqlConnection("ConnectionString")
        con.Open()
        da = New SqlDataAdapter("Select *  from Item_Details where itemname='" & ListBox1.SelectedItem.ToString() & "'", con)
        Dim dt As New DataTable
        da.Fill(dt)
        For Each row As DataRow In dt.Rows
            TextBox1.Text = row(0).ToString()
            TextBox2.Text = row(1).ToString()
            TextBox3.Text = row(2).ToString()
        Next

    Catch ex As Exception
        MsgBox(ex.Message)

    End Try
End Sub