Autor Beitrag
grinchi
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 11.07.10 17:44 
Ich möchte ein paar Daten von meiner Datenbank in ein ArrayList speichern aber meine (oft benutze bis jetzt keine Probleme machende) Funktion gibt mir nur den ersten Wert der Tabelle aus

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
ArrayList db_value = new ArrayList();
                ArrayList value_complete = new ArrayList();
                ArrayList v = new ArrayList();
                int x = 0;
                string myConnectionString = "SERVER= 127.0.0.1; DATABASE = db_stoppuhr_tim; UID=root ; PASSWORD=;";
                MySqlConnection connection = new MySqlConnection(myConnectionString);
                MySqlCommand command = connection.CreateCommand();
                command.CommandText = mysql_string;
                MySqlDataReader Reader;

                connection.Open();
                Reader = command.ExecuteReader();

                while (Reader.Read())
                {
                    while (Reader.FieldCount > x)
                    {
                        db_value.Add(Reader.GetValue(x));
                        x++;
                        value_complete.Add(db_value);
                    }
                }
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 11.07.10 18:16 
Der Code ergibt für mich keinen Sinn, du hast am Schluss in value-complete einfach n Verweise auf db_value. Was spricht denn gegen DataSet + DataAdapter?

_________________
>λ=
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 11.07.10 18:28 
user profile icongrinchi hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
 
14:
15:
16:
17:
18:
19:
20:
21:
22:
/* ... */
                while (Reader.Read())
                {
                    while (Reader.FieldCount > x)
                    {
                        db_value.Add(Reader.GetValue(x));
                        x++;
                        value_complete.Add(db_value);
                    }
                }

Ich schätze mal, value_complete soll die Zeilen enthalten, und db_value jeweils die Feldwerte. Richtig?

Dann hast du die markierte Anweisung einfach in die falsche Schleife geschrieben. Bisher erstellst du bei jeder Spalte gleich eine neue Zeile. Richtig wäre die Anweisung wohl nach dem }.

Außerdem musst du db_value jedes Mal neu erstellen, denn das alte db_value darf ja nicht mehr verändert werden. Also noch ein db_value = new ArrayList; vor die innere Schleife:

ausblenden C#-Quelltext
 
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
/* ... */
                while (Reader.Read())
                {
                    db_value = new ArrayList();
                    while (Reader.FieldCount > x)
                    {
                        db_value.Add(Reader.GetValue(x));
                        x++;
                    }
                    value_complete.Add(db_value);
                }

Ich finde den Code allerdings ziemlich unübersichtlich und habe eine Weile gebraucht, bis ich ihn verstanden habe. Du solltest eines beherzigen: Deklariere Variablen immer erst, wenn du sie brauchst. db_value kannst du zum Beispiel in der äußeren Schleife initialisieren und dort auch erstellen, dann kann so ein Fehler, wie er dir passiert ist, gar nicht erst auftreten.

Was ist eigentlich v? :gruebel:

Grüße,
Yogu

Grüße,
Yogu