Entwickler-Ecke

Basistechnologien - SQL Abfrage in mehrdimensionaler Liste


bizkit - Di 11.02.14 11:16
Titel: SQL Abfrage in mehrdimensionaler Liste
Hallo,
ich komme leider nicht weiter.
Wie kann ich meine SQL-Daten mit 3 Spalten (Vorname,Nachname, Telefonnr) in einer Liste mit 3 "Spalten" ausgeben?

Bisher habe ich eine eindimensionale Liste benutzt, aber eine mehrdimensionaler kriege ich nicht hin.

hier ist mein Code für eine eindimensionale List mit SQL-Abfrage:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
    private void button1_Click(object sender, EventArgs e)
        {

            System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection();
            connection.ConnectionString = XXXXXXXXXXXX;
            SqlCommand SqlCommand = new SqlCommand ("Select * from Mitarbeiter",connection);
            List<String> liste = new List<String>();

            try
            {
                connection.Open();

                SqlDataReader reader = SqlCommand.ExecuteReader();
              

                while (reader.Read())
                {
                    liste.Add(reader["Vorname"].ToString()); 
                    liste.Add(reader["Nachname"].ToString());
                    liste.Add(reader["Telefonnr"].ToString());
                }

            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            finally
            {
                connection.Close();
            }

           for(int i=0; i<liste.Count; i++)
           {
               label1.Text += liste[i].ToString()+"\n"
           }


        }
    }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Yankyy02 - Di 11.02.14 12:11

Hallo bizkit,

Du solltest dir eine Klasse Person mit den Properties Vorname, Nachname, Telefonnr bauen und diese dann in eine List<Person> packen.

Beim einlesen erzeugst du dann immer eine neue Person und fügst sie der Liste hinzu.


Th69 - Di 11.02.14 12:15

Hallo,

du benötigst eine eigene Klasse als Datenstruktur mit passenden Eigenschaften (properties), z.B.

C#-Quelltext
1:
2:
3:
4:
5:
6:
class Person
{
  public string Vorname { get; set; }
  public string Nachname { get; set; }
  public string TelefonNummer { get; set; }
}

Nun erzeugst du dir eine Liste davon:

C#-Quelltext
1:
List<Person> liste = new List<Person>();                    

und füllst diese dann mit passenden Person-Objekten:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
while (reader.Read())
{
    Person person = new Person();
    person.Vorname = reader["Vorname"].ToString();
    person.Nachname = reader["Nachname"].ToString();
    person.Telefonnummer = reader["Telefonnr"].ToString();

    liste.Add(person);
}


Tranx - Di 11.02.14 12:36

Gibt es in C# auch sowas wie die Komponente TDBGrid (Sozusagen ein Stringgrid mit Datenbankkomponenten)? Wenn ja, mache es doch darüber, dann kannst du den Spalten auch die Datenbankfelder zuordnen. Oder willst du die Liste als Textdatei ausgeben?


bizkit - Mi 12.02.14 01:11

Ok, ich werde dann die Vorschläge mal ausprobieren.
Mit dem DataGrid komme ich nicht so gut klar.
Auf jeden Fall schon mal Danke für die Antworten