Abfrage in zweidimensionales Array speichern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Abfrage in zweidimensionales Array speichern

    Hallo,

    ich habe eine Abfrage einer Datenbank die soweit Funtioniert.
    Die Funktion die ich schreiben möchte, soll mit einem SqlDataReader die abgefragten Daten in ein zweidimensionales Array(nZeilen, 1) speichern.
    Dies sollte im Optimalfall so Aussehen:

    array(0,0) = Sortennummer
    array(0,1) = true

    Danach die nächste Sortennummer und wieder "true"(ture bleibt immer).
    Hierzu habe ich folgende Code:

    Quellcode

    1. Dim conn = New SqlClient.SqlConnection(connstr)
    2. Dim sqlcmd As SqlCommand = New SqlCommand("select top 10 * from [pim].[dbo].[YC40]", conn)
    3. Dim reader As SqlDataReader = sqlcmd.ExecuteReader()
    4. Dim iarray As Integer = 0
    5. Dim array(iarray, 1)
    6. If reader.HasRows Then
    7. Do While reader.Read()
    8. Dim sorte = reader.Item("SORTE")
    9. array(iarray, 0) = sorte
    10. array(iarray, 1) = True
    11. iarray = iarray + 1
    12. ReDim array(iarray, 1)
    13. Loop
    14. End If


    Leider ist das Array immer leer...
    Erkennt jemand meinen Fehler?

    Danke schon mal im voraus!!!
    Die Elemente deines Arrays haben gar keinen Datentyp.

    Dringend empfohlen, als allererstes zu machen - no excuses: Visual Studio - Empfohlene Einstellungen

    Danach kann man sich auch der Tatsache widmen, dass hier eine List(Of T) viel angebrachter wäre.

    Achso - konkrete Lösung für den Fall, dass dich wirkliche Verbesserungen nicht interessieren:

    VB.NET-Quellcode

    1. ReDim Preserve array(iarray, 1)

    lycoor24 schrieb:

    Erkennt jemand meinen Fehler?
    Mehrere.
    1. Option Strict On, die Minimum-Einstellung vom @ErfinderDesRades
    2. Teste diesen Code:

      VB.NET-Quellcode

      1. Dim iarray As Integer = 0
      2. Dim array(1, 0) As Integer
      3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      4. ReDim Preserve array(1, iarray)
      5. array(0, iarray) = iarray + 1
      6. array(1, iarray) = iarray + 1
      7. iarray = iarray + 1
      8. End Sub
      Setze einen Haltepunkt auf End Sub und sieh Dir den Inhalt des Arrays an.
    3. ReDim Preserve ist ein Rudiment aus der VB6-Zeit, arbeite mit .NET und einer List(Of T):

      VB.NET-Quellcode

      1. Dim ll = New List(Of Tuple(Of Integer, Boolean))

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!