Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Frage zu Reader Objekt


Felix2000 - Mo 29.08.11 14:44
Titel: Frage zu Reader Objekt
Hi Folks !

Ich habe mal eine Frage zu dem folgenden Code:


C#-Quelltext
1:
2:
3:
4:
while (reader.Read())
{
   MessageBox.Show((reader[strColumnName]).ToString());
}


Hier benenne ich explizit den Spaltenname mithilfe einer Variable, in der die diesen Spaltennamen abgespeichert habe und der in der MessageBox ausgegeben werden sollte. Gibt es in der Klasse Reader evtl. eine methode, mit der ich evtl. eine in Frage kommende Spalte anonymer (z.B. anhand einer Nummer) ansprechen kann? Das würde meinen Code generalisieren. Ich habe leider nichts finden können dazu.

Greetz
Felix


bakachan - Mo 29.08.11 14:50

Da ich keine Ahnung habe zu welcher Klasse dein "reader"-Objekt gehört muss ich mehr oder weniger raten.
Ich gehe hier von einem IDataReader aus:

Du kannst die Spalten auch direkt per Index ansprechen.

Außerdem kannst du mit der GetName-Funktion per Index den zugehörigen Namen erfahren.


Felix2000 - Mo 29.08.11 15:01

Hi Folks !

Es handelt sich hierbei um ein SQLDataReader Objekt, soorry hatte ich vergessen zu erwähnen.

Greetz
Felix


bakachan - Mo 29.08.11 15:28

Für den SQLDataReader sollte meine oben genannte Lösung funktionieren.


Felix2000 - Mo 29.08.11 15:37

Hi Folks !

also ich habe das eben mal mit Getname() versucht, aber leider hat es nicht geklappt.


C#-Quelltext
1:
2:
3:
4:
while (reader.Read())
{   
     MessageBox.Show((reader[reader.getName(2)]).ToString()); //2 steht hier für die zweite Spale in der Datenabnktabelle
}


Greetz
Felix


Ralf Jansen - Mo 29.08.11 15:44

Zitat:
//2 steht hier für die zweite Spale in der Datenabnktabelle


Nein. Die 2 würde hier für die 3.te Spalte stehen. Indizes beginnen üblicherweise bei 0 für den ersten Eintrag.
An dieser Stelle ist das Umwandeln in den Namen aber überflüssig wenn du denn Index kennst benutz den direkt.
Also einfach reader[1] für den Wert in der 2.ten Spalte.


dark-destination1988 - Mo 29.08.11 16:25

probiers mal mit eckigen klammern [2]