MYSQL Abfrage in Textboxen.

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von mmgg.

    MYSQL Abfrage in Textboxen.

    Hallo zusammen,

    Ich versuche die Spalte der Abfrage in Textboxen zu schreiben.
    Meine Abfrage für Daten in DGV zu laden:

    VB.NET-Quellcode

    1. Private Sub anlagen_uebersicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. da = New MySqlDataAdapter("", CONNECT_STRING)
    3. With da.SelectCommand
    4. .CommandText = "SELECT AnlagenNr, ProjektBezeichnung FROM tblAnlagenNr WHERE `Autr-Erh` = 1"
    5. .CommandType = CommandType.Text
    6. End With
    7. Try
    8. da.Fill(anlagennummer_table) ' DataTable füllen
    9. TblAnlagenNrDataGridView.DataSource = anlagennummer_table ' DataTable an DGV binden
    10. TblAnlagenNrDataGridView.Columns(0).Width = 50
    11. TblAnlagenNrDataGridView.Columns(1).Width = 250
    12. Catch ex As Exception
    13. MessageBox.Show(ex.Message)
    14. End Try
    15. End Sub


    Nun möchte ich zb.

    VB.NET-Quellcode

    1. "SELECT AnlagenNr, ProjektBezeichnung, Baujahr FROM tblAnlagenNr WHERE `ID` = 1234"
    2. Textbox1.text = AnlagenNr
    3. Textbox2.text = ProjektBezeichnung
    4. Textbox3.text = Baujahr


    Kann mir da jemand helfen?
    Hallo ich habe Dies Folgendermaßen erledigt:

    VB.NET-Quellcode

    1. Dim conn As New MySqlConnection ' Verbindung
    2. Dim da As MySqlDataAdapter ' DataAdapter
    3. Dim cmd As New MySqlCommand ' SQL-Befehl
    4. Dim anlagennummer_table As New DataTable 'Datatable anlagen Nummern
    5. Dim algemein_table As New DataTable 'Datatable Anlage Algemein
    6. Private Sub anlagen_uebersicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7. da = New MySqlDataAdapter("", CONNECT_STRING)
    8. With da.SelectCommand
    9. .CommandText = "SELECT AnlagenNr, ProjektBezeichnung FROM tblAnlagenNr WHERE `Autr-Erh` = 1"
    10. .CommandType = CommandType.Text
    11. End With
    12. Try
    13. da.Fill(anlagennummer_table) ' DataTable füllen
    14. TblAnlagenNrDataGridView.DataSource = anlagennummer_table ' DataTable an DGV binden
    15. TblAnlagenNrDataGridView.Columns(0).Width = 50
    16. TblAnlagenNrDataGridView.Columns(1).Width = 250
    17. Catch ex As Exception
    18. MessageBox.Show(ex.Message)
    19. End Try
    20. End Sub
    21. Private Sub TblAnlagenNrDataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles TblAnlagenNrDataGridView.CellContentClick
    22. If e.RowIndex >= 0 Then
    23. Dim row As DataGridViewRow
    24. row = Me.TblAnlagenNrDataGridView.Rows(e.RowIndex)
    25. AnlagenNrTextBox.Text = row.Cells("AnlagenNr").Value.ToString
    26. ProjektBezeichnungTextBox.Text = row.Cells("ProjektBezeichnung").Value.ToString
    27. End If
    28. End Sub

    *Den connection string habe ich mal weggelassen.

    Nun dies Funktioniert einwandfrei.
    Zusätzlich bräuchte ich aber das Selbe ohne DGV, da habe ich schon etwas Programmiert aber es kommt der Fehler:
    Der Schlüssel darf nicht Null sein. Parametername: key

    VB.NET-Quellcode

    1. ​Sub allgemein()
    2. Try
    3. Dim READER As MySqlDataReader
    4. Dim query As String
    5. query = "Select * FROM tblAnlageAllgemein WHERE AnlagenNr = 1745"
    6. conn.Open()
    7. cmd = New MySqlCommand(query, conn)
    8. READER = cmd.ExecuteReader
    9. While READER.Read
    10. 'MaxAusladungTextBox.Text = READER.GetDecimal("MaxAusladung")
    11. End While
    12. Catch ex As Exception
    13. MessageBox.Show(ex.Message)
    14. End Try
    15. End Sub


    Kann mir jemand helfen?
    mit blick auf deinen code unterstell ich mal, dass du es inzwischen schon selbst gesehen hast.
    Sonst könnt ich mir denken, dass dein connecsting auf eine andere DB zeigt, eine Kopie von gestern, was immer, und dort ist diese Tabelle eben leer - sind so sachen dei man schnell übersieht.
    JonDonym
    Eine Anonymisierung-Tool, das nicht nur deine IP verdeckt, sondern deine History, BrowserTyp, Windows-Version etc.
    Das Tool hat ca. 5 FreeKaskaden und ca. 10 Premium. Minimum 5 EUR für ein Volumen von 650MB.
    Hallo der Code wurde zusammengestellt durch nachlesen und überlegen, daher bin ich mir nicht sicher ob dieser auch wirklich stimmt.
    Mein ganzer Code:

    VB.NET-Quellcode

    1. ​Public Class anlagen_uebersicht
    2. Const CONNECT_STRING As String = "SERVER=192.168.61.5;" _
    3. & "DATABASE=anlagendatenbank;" _
    4. & "UID=test;PWD=test"
    5. Dim conn As New MySqlConnection ' Verbindung
    6. Dim da As MySqlDataAdapter
    7. Dim cmd As New MySqlCommand ' SQL-Befehl
    8. Dim anlagennummer_table As New DataTable 'Datatable anlagen Nummern
    9. Dim service_table As New DataTable 'Datatable Service
    10. Dim stoerung_table As New DataTable 'Datatable Störng
    11. Dim montage_table As New DataTable 'Datatable Montage
    12. Dim instruktion_table As New DataTable 'Datatable Instruktion
    13. Dim algemein_table As New DataTable 'Datatable Anlage Algemein
    14. Private Sub anlagen_uebersicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    15. com_suche.Text = "ProjektBezeichnung"
    16. da = New MySqlDataAdapter("", CONNECT_STRING)
    17. With da.SelectCommand
    18. .CommandText = "SELECT AnlagenNr, ProjektBezeichnung FROM tblAnlagenNr WHERE `Autr-Erh` = 1"
    19. .CommandType = CommandType.Text
    20. End With
    21. Try
    22. da.Fill(anlagennummer_table) ' DataTable füllen
    23. TblAnlagenNrDataGridView.DataSource = anlagennummer_table ' DataTable an DGV binden
    24. TblAnlagenNrDataGridView.Columns(0).Width = 50
    25. TblAnlagenNrDataGridView.Columns(1).Width = 250
    26. conn.Close()
    27. Catch ex As Exception
    28. MessageBox.Show(ex.Message)
    29. End Try
    30. End Sub
    31. Private Sub TblAnlagenNrDataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles TblAnlagenNrDataGridView.CellContentClick
    32. If e.RowIndex >= 0 Then
    33. Dim row As DataGridViewRow
    34. row = Me.TblAnlagenNrDataGridView.Rows(e.RowIndex)
    35. AnlagenNrTextBox.Text = row.Cells("AnlagenNr").Value.ToString
    36. TextBox4.Text = row.Cells("AnlagenNr").Value.ToString
    37. ProjektBezeichnungTextBox.Text = row.Cells("ProjektBezeichnung").Value.ToString
    38. End If
    39. End Sub
    40. 'Allgemein Laden
    41. Sub allgemein()
    42. Try
    43. Dim READER As MySqlDataReader
    44. Dim query As String
    45. query = "Select * FROM tblAnlageAllgemein WHERE AnlagenNr = 1745"
    46. conn.Open()
    47. cmd = New MySqlCommand(query, conn)
    48. READER = cmd.ExecuteReader
    49. While READER.Read
    50. 'MaxAusladungTextBox.Text = READER.GetDecimal("MaxAusladung")
    51. End While
    52. Catch ex As Exception
    53. MessageBox.Show(ex.Message)
    54. End Try
    55. End Sub
    56. Private Sub Button58_Click(sender As Object, e As EventArgs) Handles Button58.Click
    57. Call allgemein()
    58. End Sub
    59. End Class


    Ich verwende die gleichen Connection jedoch Funktioniert nur das DGV und das Filtern des DGV's in die Textboxen
    Der Sub "Allgemein" Funktioniert nicht.
    Ich hab deinen Code mal übernommen, konnt aber nur einen error finden für die auskommentierte zeile.

    'MaxAusladungTextBox.Text = READER.GetDecimal("MaxAusladung")
    Wenn due es so schreibst

    MaxAusladungTextBox.Text = Cstr(READER.GetDecimal("MaxAusladung"))
    sollte es gehen, vorausgesetzt Maxausladung ist eine Spalte vom Typ Zahl
    JonDonym
    Eine Anonymisierung-Tool, das nicht nur deine IP verdeckt, sondern deine History, BrowserTyp, Windows-Version etc.
    Das Tool hat ca. 5 FreeKaskaden und ca. 10 Premium. Minimum 5 EUR für ein Volumen von 650MB.
    Hallo,

    Ich hoffe aber das du das nur zum Expreimentieren und nicht in ernst meinst :O Stichwort SQL-Injection. Damit wöähre deine DB oder die des späteren Users massiv gefärdet. !

    LG, Herbrich
    Wie Meinst du das?
    Ich würde gerne die Abfrage über mehrere Tabellen auf ein Tabellenblatt ausgeben.
    (Anhand von Textboxen nicht ein DGV)


    Edit:
    Ich habe diese Zeile eingefügt:

    VB.NET-Quellcode

    1. ​MaxAusladungTextBox.Text = Cstr(READER.GetDecimal("MaxAusladung"))


    Jedoch mit der selben Fehlermeldung.

    Im Anhang das Bild der Formatierung
    Bilder
    • ausladung.PNG

      6,75 kB, 780×23, 203 mal angesehen

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

    nochmal angelehnt an diese errormessage die du oben schreibst, würde ich sagen, kuck nochmal nach oben den tatsächlich eine zeile für diese nummer "1745" existiert. In der Tabelle dieser Datenbank. Auch wenn das trivial ist, aber was andrs bleibt wohl nicht übrig


    Lass den reader einfach mal laufen, füll eien luistbox o.ä. aber eben mit diesem sql-string, um zu sehen ob sich da überhaupt was zeigt
    JonDonym
    Eine Anonymisierung-Tool, das nicht nur deine IP verdeckt, sondern deine History, BrowserTyp, Windows-Version etc.
    Das Tool hat ca. 5 FreeKaskaden und ca. 10 Premium. Minimum 5 EUR für ein Volumen von 650MB.