使用组合框VB.NET将OleDb记录读入文本框

使用组合框VB.NET将OleDb记录读入文本框,vb.net,combobox,textbox,oledb,Vb.net,Combobox,Textbox,Oledb,我是编程新手。我试图完成的是在VB.NET中填充9个文本框,使用组合框(CbbNaamfirma)读取访问表TblKlanten。我不能让它为我的生活工作;为了这个简单的东西我已经找了6个小时了。你们谁能帮帮我吗?我在SO.com上读过很多这样的帖子,它们对我都不起作用。 我现在有: Private Sub CbbNaamfirma_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Han

我是编程新手。我试图完成的是在VB.NET中填充9个文本框,使用组合框(CbbNaamfirma)读取访问表TblKlanten。我不能让它为我的生活工作;为了这个简单的东西我已经找了6个小时了。你们谁能帮帮我吗?我在SO.com上读过很多这样的帖子,它们对我都不起作用。 我现在有:

Private Sub CbbNaamfirma_SelectedIndexChanged(sender As System.Object, e As           System.EventArgs) Handles CbbNaamfirma.SelectedIndexChanged
Dim Connection As New OleDb.OleDbConnection
    Connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Application.StartupPath & "\Database.accdb.'"
    Try
        Connection.Open()
        Dim query As String
        query = "SELECT Adres FROM TblKlanten WHERE [Naam firma] = ' " & CbbNaamfirma.Text & " ' "
        Dim cmd As New OleDbCommand(query, Connection)
        Dim Reader As OleDbDataReader = cmd.ExecuteReader
        Reader = cmd.ExecuteReader
        While Reader.Read
           TxtAdresprev.Text = Reader.GetString("Adres")
        End While
        Connection.Close()
    Catch ex As OleDbException
        MessageBox.Show(ex.Message)
    Finally
        Connection.Dispose()
    End Try
End Sub

先谢谢你。希望代码块结果正常?

首先要更改的是使用参数化查询从数据库中读取数据。请注意,代码找不到任何内容,因为在combobox的值之前和之后都添加了空格

然后,您需要开始在一次性对象周围使用using语句,以确保正确关闭和处理

最后,OleDbDataReader中的GetString方法希望在返回的字段列表中有一个数字索引,而不是字段的名称

Private Sub CbbNaamfirma_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbbNaamfirma.SelectedIndexChanged
    Dim cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                    Application.StartupPath & "\Database.accdb"
    Dim query = "SELECT Adres FROM TblKlanten WHERE [Naam firma] = ?"
    Using Connection = New OleDb.OleDbConnection(cnString)
    Using cmd = New OleDbCommand(query, Connection)
        Try
           Connection.Open()
           cmd.Parameters.AddWithValue("@p1", CbbNaamfirma.Text) 
           Using Reader = cmd.ExecuteReader
               While Reader.Read
                  Dim posAdres = Reader.GetOrdinal("Adres")
                  TxtAdresprev.Text = Reader.GetString(posAdres)
                  .... other text boxes for other fields here.....
              End While
           End Using

       Catch ex As OleDbException
           MessageBox.Show(ex.Message)
       End Try
   End Using
   End Using
End Sub

此外,您的连接字符串似乎是错误的。不需要引用,而且名字后面的错误点是错误的

先生,你救了我的命。我怎样才能以任何有意义的方式感谢你呢?如果我的回答有帮助,你可以接受它和/或投赞成票。(当系统允许你这么做时)再次阅读…再见…VoteUp需要15个信誉…另外,我有一个新问题。我为文本字段输入了剩余的代码,但它显示的是txtdresprev.text中的posAdres..怎么办?请用固定的代码发布一个新问题(接受和向上投票是两件不同的事情)