Combobox einen Indexwert zuweisen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Combobox einen Indexwert zuweisen

    Hi allerseits! Brauche mal wieder fachkräftigen Rat.

    Ich habe ein kleines Programm, das aus einer der Tabelle "Benutzer" in einer MySQL-Datenbank (testdatenbak) die Nachnamen der dort eingetragenen Personen ausliest und in eine Combobox schreibt. Soweit so gut. Nun möchte ich aber erreichen, dass jedem dieser Namen in der Combobox beim Abruf der Daten aus der MySQL-Datenbank im Hintergrund auch noch der zugehörige Indexwert "ID" aus der selben Tabelle zugeordnet wird.

    Der Abruf müsste ja relativ einfach über den Befehl read("ID") erfolgen können. Wie lautet nun aber der vorangestellte Befehl, um diese dem jeweiligen Nachnamen in der Combobox zuzuordnen?

    VB.NET-Quellcode

    1. Imports MySql.Data.MySqlClient
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim con As New MySqlConnection
    5. Dim cmd As New MySqlCommand
    6. Dim reader As MySqlDataReader
    7. con.ConnectionString = "Data Source=127.0.0.1;database=testdatenbank;UID=root;pwd=12345"
    8. cmd.Connection = con
    9. cmd.CommandText = "SELECT * from benutzer"
    10. ComboBox1.Items.Clear()
    11. Try
    12. con.Open()
    13. reader = cmd.ExecuteReader
    14. Do While reader.Read()
    15. ComboBox1.Items.Add(reader("nachname")
    16. Loop
    17. reader.Close()
    18. con.Close()
    19. Catch ex As Exception
    20. End Try
    21. End Sub
    22. End Class
    mit Databinding kannst du eine Combo an Datensätze binden. Diese Datensätze beinhalten dann alles: alle Properties und natürlich auch die ID.

    Aber mti deinem Ansatz von DB-Zugriff verbaust du dir das von vornherein.

    gugge Datenbänkerei-Einstieg und weiterführende Links
    Danke für deine rasche Antwort. Gibt es denn gar keine Möglichkeit, mein Vorhaben "händisch" umzusetzen? Mit SQL-Befehlen komme ich ganz gut aus, in das DataBinding-Zeugs müsste ich mich ersteinmal einarbeiten. Bisher klappt das leider nicht so erfolgreich :wacko: . Ich befürchte, dass ich sonst irgendwann haufenweise DataBindings, Tableadapter, etc in meinem Projekt rumfliegen habe, von denen ich nicht weiß, wofür ich sie mal erstellt habe und wo sie gebraucht werden.
    Das Gegenteil ist der Fall: bei dem händischen Zeugs verlierst du recht bald den Überblick.

    also klar - es geht auch händisch, nur bin ich da nicht sonderlich kompetent, und wüsste ichs, würd ichs dir nicht sagen, denn das ist ein Hozweg, der in unwartbare Programme führt.

    Wenn du Datenbänkerei-Einstieg aufmerksam liest wird dir auch auffallen, dass dort von Datenbanken generell erstmal abgeraten wird.
    Für eine Test-Anwendung mit Benutzern, deren Nachnamen und Ids ist eine DB auch vollkommen oversized.
    Also bisher finde ich es übersichtlicher, eine Verbindung zur Datenbank aufzubauen, eine SQL Abfrage zu tätigen, das Ergebnis zu verwerten und die Verbindung wieder zu schließen. Selbst wenn ich hunderte Seiten Code hätte, würde ich doch im Code immer anhand des jeweiligen SQL-Befehls sehen, was Sache ist. Ist doch fast übersichtlicher, als mit den automatisierten Datasets.

    Hier habe ich eine mögliche Lösung für mein Problem gefunden:

    [VB 2012] MySQL Combobox
    Zusammengefügt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FlashTek“ ()