datenbank auslesen und mit return zurück

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    datenbank auslesen und mit return zurück

    Abend,
    Ich habe folgenden Code (dieser funktioniert auch) meine frage ist wie ich das mas in mydata steht mittels return zurück geben kann.


    Visual Basic-Quellcode

    1. Dim conn As New MySql.Data.MySqlClient.MySqlConnection
    2. Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
    3. Dim myConnectionString As String
    4. DataGridArticle.Rows.Clear()
    5. Try
    6. conn.Open()
    7. Dim mysqladapter As New MySqlDataAdapter
    8. sqlquary = "SELECT * FROM erfassungsliste ORDER By lager ASC"
    9. cmd.Connection = conn
    10. cmd.CommandText = sqlquary
    11. mysqladapter.SelectCommand = cmd
    12. Dim mydata As MySqlDataReader
    13. mydata = cmd.ExecuteReader
    14. While mydata.Read()
    15. With DataGridArticle
    16. .Rows.Add(mydata(0),
    17. mydata(1),
    18. mydata(2),
    19. mydata(3),
    20. mydata(4),
    21. mydata(5),
    22. mydata(6))
    23. End With
    24. End While
    25. conn.Close()
    26. Catch ex As Exception
    27. conn.Close()
    28. MessageBox.Show("Verbindung konnte nicht hergestellt." & vbNewLine & "Folgender Fehler wurde festgestellt: " & vbNewLine & (ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    29. End Try

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

    Dazu müsstest du erst eine Methode schreiben.
    So verlorene Zeilen kompilieren ja garnet.

    Dann brauchst du eine Klasse, die das was in mydata steht aufnehmen kann, also die braucht so viele Properties, wie das was in mydatas steht. Ich bezeichne solche Klassen gerne als Datensatz-Klasse.
    Weil ohne Datensatz-Klasse kannst du keine Liste von Datensätzen befüllen.
    Und erst recht nicht zurückgeben.
    Ok,
    und wie gebe ich ein mehrdimensionales Array mittels Return zurück.
    habe bis jetzt nur geschafft ein eindimensionales Array zurück zugeben

    Visual Basic-Quellcode

    1. ​Dim states() As List(Of String) = {{"AZ", "CA", "WA"}, {"AZ", "CA", "WA"}}
    2. Feld = states


    Achso eventuell noch gesagt das ich dass ich diese Funktion in eine DLL auslagern möchte.
    nachwievor nur verlorene Zeilen, eine Methode ist nicht erkennbar. Weißt du nicht, was der Begriff "Methode" bedeutet? Grundlagen: Fachbegriffe
    Allerdings ohne eine Methode kann man nichts zurückgeben, denn es ist ja eine Methode, die etwas zurückgibt.

    Und nächste Frage wäre: Was für ein Array? Array-Elemente müssen ja einen Datentyp haben, etwa Integer, oder Char

    (und dein gezeigter Code kompiliert nicht)

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

    Der oberer ?
    Das wäre der ganze Code ohne Auslagerung in die DLL

    Visual Basic-Quellcode

    1. Imports MySql
    2. Imports MySql.Data
    3. Imports MySql.Data.MySqlClient
    4. Private Sub loadTyp()
    5. Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
    6. Dim myConnectionString As String
    7. Dim myConnectionString As String
    8. myConnectionString = "server=127.0.0.1; uid=User12; pwd=password; database=erfassungsliste; port=3306;"
    9. conn.ConnectionString = myConnectionString
    10. Try
    11. conn.Open()
    12. Dim mysqladapter As New MySqlDataAdapter
    13. sqlquary = "SELECT * FROM erfassungsliste ORDER By lager ASC"
    14. cmd.Connection = conn
    15. cmd.CommandText = sqlquary
    16. mysqladapter.SelectCommand = cmd
    17. Dim mydata As MySqlDataReader
    18. mydata = cmd.ExecuteReader
    19. While mydata.Read()
    20. 'MsgBox(mydata(0))
    21. With DataGridTyp
    22. .Rows.Add(mydata(0),
    23. mydata(1),
    24. mydata(2),
    25. mydata(3),
    26. mydata(4),
    27. mydata(5),
    28. mydata(6))
    29. End With
    30. End While
    31. conn.Close()
    32. Catch ex As Exception
    33. conn.Close()
    34. MessageBox.Show("Verbindung konnte nicht hergestellt." & vbNewLine & "Folgender Fehler wurde festgestellt: " & vbNewLine & (ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    35. End Try
    36. End Sub
    Habe es jetzt wie folgt gelöst. Allerdings mit einem kleinen Schönheitsfehler und zwar lese ich mit mydata.fieldCount.toString ja nur die Anzahl der Salten aus. Wie lese ich den die Anzahl der Zeilen aus?

    Visual Basic-Quellcode

    1. Function loadTyp()
    2. Dim myData As MySqlDataReader
    3. cmd.Connection = conn
    4. SQLAbfrage = "SELECT `* FROM `typen_liste` ORDER By teile_nr ASC"
    5. cmd.CommandText = SQLAbfrage
    6. Dim index As Integer = 0
    7. Try
    8. conn.Open()
    9. cmd.Connection = conn
    10. cmd.CommandText = SQLAbfrage
    11. mysqladapter.SelectCommand = cmd
    12. myData = cmd.ExecuteReader
    13. Dim values(myData.FieldCount.ToString(), 1) As String
    14. index = 0
    15. While myData.Read()
    16. values(index, 0) = myData(1)
    17. values(index, 1) = myData(2)
    18. index += 1
    19. End While
    20. conn.Close()
    21. loadTyp = {{"True"}, {values}}
    22. Catch ex As Exception
    23. conn.Close()
    24. loadTyp = {{"False"}, {ex.Message}}
    25. End Try
    26. End Function
    Ohne jetzt auf deinen Code näher einzugehen..
    Du könntest, wenn du es unbedingt brauchst vorher eine SQL Abfrage mit Select Count(*) und cmd.ExecuteScalar machen und diesen Wert verwenden.

    Oder du arbeitest mit Datasets und Datatables.

    LG
    Das ist meine Signatur und sie wird wunderbar sein!