Announcement

Collapse
No announcement yet.

Anzahl Elemente in Array

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzahl Elemente in Array

    Hi

    wahrscheinlich voll einfach komm aber echt nicht drauf, Herr google spuckt auch nichts:

    Habe ein array mit 50 Elementen deklariert
    Code:
    string[] arr = new string[50]
    dann fülle ich das mit Daten aus einer Datenbank. Ich weiß aber nicht wieviele Daten das sind. Wie bekomme ich nun raus wieviele Elemente tatsächlich drinne sind, arr.lenght gibt mir ja die größe vom Array also 50 wenn aber nur 40 drinne stehen möchte ich nur 40 zurückbekommen.

    Hoffe ihr könnt mir helfen

  • #2
    Man verwendet in .NET eigentlich keine Arrays mehr, ausser man will explizit eine feste Anzahl von Elementen haben. Dies ist aber bei Dir nicht der Fall.
    Du solltest generische Listen verwenden und die Daten dort hinzufügen. Diese Listen passen sich der Größe dynamisch an.

    [highlight=c#]
    IList<String> meineStrings = new List<String>();
    meineStrings.Add("Hello World!");
    meineStrings.Add("Hello World 2!");
    meineStrings.Add("Hello World 3!");
    [/highlight]

    Wie machst Du denn den Datenbankzugriff? Von dort solltest Du doch auch schon eine Liste der Datensätze aus der Datenbank bekommen.

    Comment


    • #3
      mit einer MySqlConnection, dann mit dataread das ergebnis der SELECT-Anweisung als string in meinem Array speichern. Die Listen sagen mir grad gar nichts hab vorher mit c++ programmiert da gibs sowas meines wissens nach nicht

      Comment


      • #4
        grad gar nichts hab vorher mit c++ programmiert da gibs sowas meines wissens nach nicht
        Sicherlich http://www.cplusplus.com/reference/stl/
        Christian

        Comment


        • #5
          Was du mit dataread meinst, ist unklar. Benutzt du MySqlCommand.ExecuteReader und wertest das Ergebnis, also einen MySqlDataReader aus?

          Wenn du eine Datenmenge holst (also mehr als eine oder zwei Spalten und mehr als wenige Zeilen), dann bietet sich DbDataAdapter.Fill an mit Ergebnis in einer DataTable. Dann hast du mit Rows schon eine Menge von Zeilen.

          Bei ExecuteReader kann List<string> das Ergebnis speichern.

          Zur Einführung siehe openbook VC# Kap 25 ff. Anstelle der Sql-Klassen musst du deine MySql-Klassen verwenden.

          Gruß Jürgen

          Comment


          • #6
            richtig ich nehm den MySqlDatareader

            Code:
             string strSQL = "SELECT DISTINCT Steuercode FROM adsusdetail";
                        MySqlCommand cmd = new MySqlCommand(strSQL, con);
            
                        MySqlDataReader dataread = cmd.ExecuteReader();
            
                        for (int i = 0; dataread.Read() == true; i++)
                        {
                            arr1[i] = dataread.GetString("Steuercode");
                        }

            Comment


            • #7
              Dann geht es einfach so:
              Code:
              List<string> result = new List<string>();
              // und dann in der Schleife:
              result.Add(dataread.GetString("Steuercode"));
              Du siehst: von Anfang an vollständige Informationen zur Problembeschreibung bringen schnellere Lösungen.

              Jürgen

              Comment


              • #8
                naja, das war nicht mein ursprüngliches Problem
                aber thx für die Lösungen

                *was brauch ich da für using damit ich List benutzen kann ?
                *using System.Collections.Generic;
                Zuletzt editiert von emerel; 05.03.2010, 11:41.

                Comment


                • #9
                  Jetzt hab ich aber immer noch das Problem das ich nicht weiß wieviele Elemente nun in meinem ArrayList stehen
                  Wie soll ich jetzt in einer For-Schleife sagen wie lange der die Elemente auslesen soll?

                  Comment


                  • #10
                    Was könnte die Eigenschaft count zurückgeben?

                    http://msdn.microsoft.com/en-us/libr...st(VS.71).aspx
                    Christian

                    Comment


                    • #11
                      SUPER!!!! THX
                      du bist warhaftig ein Forenheld

                      Comment


                      • #12
                        Ausserdem braucht man keine For Schleife.... dafür gibts die Foreach Schleife. Die weiss selbst wie sie durch die Collection interieren muss.

                        [highlight=c#]
                        foreach(String s in meineStrings)
                        {
                        Console.Writeline(s);
                        }
                        [/highlight]

                        Also korrekterweise weiss es nicht die foreach schleife, sondern IEnumerator Objekt welches von der Collection zurückgegeben wird. Aber das sind Details

                        Comment

                        Working...
                        X