Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Spaltenheader auslesen c#
Alex1989 - Mo 02.08.10 17:27
Titel: Spaltenheader auslesen c#
Hallo zusammen,
Ich habe in einem kleine Projekt das Problem das ich keine möglichkeit finde die texte der Spalten header auszulesen und in einem Array zu speichern. eine allgemeine lösung für das problem würde mir schon reichen.
Das ganze beruht auf einer Access Tabelle
diese wird dann in ein Dataset geladen ...
Danke schonmal im vorraus
Moderiert von
Kha: Topic aus WinForms verschoben am Mo 02.08.2010 um 19:19
JüTho - Mo 02.08.10 19:05
Hallo und :welcome:
Ein DataSet enthält DataTables. Eine DataTable enthält Columns, diese sind vom Typ DataColumnCollection. Die einzelnen Items sind vom Typ DataColumn; diese haben u.a. ColumnName und Caption.
Ich kenne keine Methode, die alle Namen in einem Schritt liefert. Es ist aber kein Problem, diese Informationen mit einer Schleife auszulesen. Du musst nur daran denken, dass ein Array eine feste Größe hat; diese müsstest du also (nach der Anzahl der Spalten) als erstes bestimmen.
Gruß Jürgen
Alex1989 - Di 03.08.10 10:40
Danke Jürgen
Das war genau die Infomation die ich gebraucht habe! konnte also das Problem nun lösen funktioniert wunderbar.
Habe einfach das Datatable zu einer DataColumnCollection hinzugefügt und konnte die dazugehörige Variable dann als ein Array verwenden und alle nötigen infomationen auslesen
Ich pack mal den groben Code rein damit das nachgelesen werden kann.
DataTable dt = new DataTable();
.
.
.
OleDbDataAdapter adapter =
new OleDbDataAdapter("Select * from " + tabellenname, conn);
adapter.Fill(dt);
conn.Close();
string[] namenliste = new string[dt.Columns.Count];
DataColumnCollection dcc = dt.Columns;
for (int i = 0; i < dt.Columns.Count; i++)
{
namenliste[i] = dcc[i].ColumnName.ToString();
}
Und danke Nochmals =)
JüTho - Di 03.08.10 16:47
Freut mich, dass es so geholfen hat. Bitte beachte künftig, dass Code als solcher markiert werden soll: Code-Bereich markieren, unter Bereiche C# wählen, dann den Plus-Button.
Kleine Anmerkungen: Die Variable dcc ist überflüssig; auch im for kannst du dt.Columns benutzen. Statt for geht auch foreach; das ist in aller Regel praktischer und liefert meistens dieselbe Reihenfolge. (Weil du mit dem Eintragen in das Array sowieso einen Index brauchst, ist in diesem Fall for vermutlich praktischer.) ColumnName.ToString() ist überflüssig, weil ColumnName bereits ein String ist. Der Schluss kann also so verkürzt werden:
C#-Quelltext
1: 2: 3: 4: 5:
| string[] namenliste = new string[dt.Columns.Count]; for (int i = 0; i < dt.Columns.Count; i++) { namenliste[i] = dt.Columns[i].ColumnName; } |
Übrigens ist überall dort, wo eine Liste keine feste Größe hat, List<T> besser als ein Array. Vor allem das Hinzufügen (und Entfernen) ist dabei erheblich einfacher. Das hatte ich bisher nicht vorgeschlagen, weil du ausdrücklich ein Array haben wolltest.
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!