MySQL Daten aus bestimmter Spalte auslesen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von MrJaWo.

    MySQL Daten aus bestimmter Spalte auslesen

    Moin Moin,
    wir haben folgendes Problem:
    Eine MySQL Datenbank mit einer Tabelle Namens fahrzeug - Darunter befinden sich Vier Spalten Einträge mit jeweils folgenden Daten:

    id , kennung, status, besetzt

    Die Kennung liegt in einem Label in einer Form. Wir möchten jetzt aus der Kennung im Label in der Form, die id des Fahrzeuges, in ein Label auslesen.

    Datenbankverbindung funktioniert.

    VB.NET-Quellcode

    1. Public Class kfz_verwaltung
    2. Dim conn As New MySqlConnection
    3. Dim cmd As New MySqlCommand
    4. Private Sub kfz_verwaltung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. 'Aufbau Mysql Verbindung und schreiben in die Datenbank
    6. conn.ConnectionString = "server=xxx.xxx.xxx.xxx;userid=meinuser;password=meinpasswort;database=meinedatenbank"
    7. cmd.Connection = conn
    8. cmd.CommandText = "SELECT * FROM fahrzeug WHERE kennung = '" & Label2.Text & "' ORDER BY id DESC"
    9. conn.Open()
    10. 'Auslesen Fahrzeug ID
    11. reader = cmd.ExecuteReader
    12. Try
    13. While reader.read()
    14. Label4.Text = reader("id")
    15. End While
    16. Catch ex As Exception
    17. MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    18. End Try
    19. conn.Close()
    20. 'Schreiben der Belegung des Fahrzeuges
    21. 'Try
    22. 'cmd.CommandText = "UPDATE `fahrzeug` SET `besetzt` = '1' WHERE `fahrzeug`.`id` = '" & Label4.Text & "'"
    23. 'conn.Open()
    24. 'cmd.ExecuteNonQuery()
    25. 'Catch ex As Exception
    26. 'MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    27. 'End Try
    28. 'conn.Close()
    29. End Sub
    30. End Class


    Es werden keine Fehlermeldungen ausgegeben. Das Label4 bleibt einfach leer.

    Für eure Hilfe schon mal im voraus vielen Dank.

    PS.: Wegen der Hartcodierung - Läuft Lokal :)

    LG

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

    ErfinderDesRades schrieb:

    Ich kann mir nur vorstellen, dass die Db-Tabelle leer ist.
    Wenns so einfach wäre, wäre das Super.
    Aber:

    :(

    ErfinderDesRades schrieb:

    Kennst du den Einzelschritt-Modus?
    Leider kenne ich diesen nicht.

    Ich sitze seit zwei Tagen dran. Und mach mir echt Gedanken... Hab mir tausend mal den MySQL Syntax durchgelesen.
    Das ist wie Verhext.

    EDIT: Moment mal... Er dürfte doch im Vergleich kein Problem mit Leerzeichen haben oder?
    wir haben das ganze auch im Einzelschritt verfahren geprüft und das gleiche ergebnis wie MrJaWo schon geschrieben hat in seinem ersten Posting besteht weiterhin. und die Tabelle ist definitiv nicht leer, wie der Screenshot auch zeigt.

    Defaktu ist mal etwas hilfe angebracht als dumme Kommentare wie google ist nicht deine mami und co.
    auf den Trichter wie man google richtig nutzt sind sich seit es google gibt schon mehrfach selber gekommen.
    Wobei die Tabelle ja nicht leer sein kann, da ich in der Auswahl der Fahrzeuge:

    VB.NET-Quellcode

    1. Public Class fzgwahl
    2. Private Sub fzgwahl_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. 'Lesen der vorhandenen Fahrzeuge
    4. Dim conn As New MySqlConnection
    5. Dim cmd As New MySqlCommand
    6. Dim reader As MySqlDataReader
    7. conn.ConnectionString = "verbindungsstring"
    8. cmd.Connection = conn
    9. cmd.CommandText = "SELECT * FROM fahrzeug ORDER BY id"
    10. conn.Open()
    11. reader = cmd.ExecuteReader
    12. 'Ausgeben in Auswahlliste BF und FF
    13. While reader.Read()
    14. If reader("hiorg") = "BF" And reader("besetzt") = "0" Then
    15. ComboBox1.Items.Add(reader("kennung"))
    16. ElseIf reader("hiorg") = "FF" And reader("besetzt") = "0" Then
    17. ComboBox2.Items.Add(reader("kennung"))
    18. End If
    19. End While
    20. conn.Close()
    21. End Sub


    Folgendes passiert:


    Deswegen völlige Verzweiflung.
    @Drachie: sry - das mit google ist nicht als Kommentar gemeint, sondern das Forum generiert den Link-Titel entsprechend des Tutorial-Titels, wenn ich ihn einfüge.

    ausserdem ist die Aussage ja das gegenteil, wie du sie zu verstehen scheinst: Die Aussage ist nämlich nicht "benutze google", sondern: "Wenn man mit Visualstudio kennt, dann muss man viel weniger googeln".
    Und der TE hat gesagt, er kennt den Einzelschritt nicht, daher sollte das Video ihm sehr hilfreich sein.

    Eigentümlich, dass du darauf antwortest, noch dazu in gereizter Stimmung, wo ich dich doch ühaupt nicht angesprochen hab.



    @MrJaWo: Dann wird die Where-Bedingung der Abfrage wohl für keinen Datensatz erfüllt, und nicht die Tabelle ist leer, wohl aber der Reader.
    Im Einzelschritt kannst du solch genau nachvollziehen.
    Hallo @MrJaWo

    ich hab mir dazu diese Funktion erstellt:

    VB.NET-Quellcode

    1. Private Function conExecute(ByVal strSQL As String) As Integer
    2. Dim con As New SqlClient.SqlConnection
    3. Dim sqlAdapter As New SqlClient.SqlDataAdapter
    4. Dim sqlCmd As New SqlClient.SqlCommand
    5. Dim sqlReader As SqlClient.SqlDataReader
    6. con.ConnectionString = "DeinConnectionString"
    7. sqlCmd.Connection = con
    8. sqlCmd.CommandText = strSQL
    9. sqlAdapter.SelectCommand = sqlCmd
    10. con.Open()
    11. sqlReader = sqlCmd.ExecuteReader()
    12. If sqlReader.HasRows Then
    13. sqlReader.Read()
    14. sarAll = CInt(sqlReader(0))
    15. con.Close()
    16. End If
    17. Return sarAll
    18. End Function


    Lass bei dir mal das Try Catch weg und nimm anstatt "ID" den index der Spalte...
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    ich hab mir dazu diese Funktion erstellt:

    Sehr Nett von dir, aber wir arbeiten mit MySQL 5 und dein Quellcode ist für MSSQL.

    Aber dennoch ein Anstoß - Vielen Dank dafür!

    Problem gefunden.

    Folgendes:
    Bei der Übergabe der Kennung aus der Fahrzeugauswahlform in das Label der KFZ_Verwaltungsform läuft die MySQL Abfrage bereits und so schnell ab, das zum Zeitpunkt der Abfrage noch gar kein Text in dem betroffenen Label vorhanden ist.

    Resultat:
    NIX PASSIERT! :)

    Wenn man das ganze aber in einen Timer mit Einer Sekunde Verzögerung legt. Klappt die Abfrage Einwandfrei mit folgendem Korrigierten Code:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. Dim conn As New MySqlConnection
    3. Dim cmd As New MySqlCommand
    4. 'Aufbau Mysql Verbindung und schreiben in die Datenbank
    5. conn.ConnectionString = "meinconnectionstring"
    6. cmd.Connection = conn
    7. cmd.CommandText = "SELECT * FROM fahrzeug WHERE kennung = '" & Label2.Text & "' ORDER BY id DESC"
    8. '"SELECT * FROM fahrzeug WHERE kennung = '" & Label2.Text & "'"
    9. conn.Open()
    10. 'Auslesen Fahrzeug ID
    11. reader = cmd.ExecuteReader
    12. While reader.Read
    13. Label4.Text = reader("id")
    14. End While
    15. conn.Close()
    16. End Sub


    Aber trotzdem Vielen Lieben Dank.

    Manchmal ist das Einfachste zu schwierig :D