Autor Beitrag
Felix2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Mo 29.08.11 14:44 
Hi Folks !

Ich habe mal eine Frage zu dem folgenden Code:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: 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.


Zuletzt bearbeitet von bakachan am Mo 29.08.11 15:47, insgesamt 1-mal bearbeitet
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 29.08.11 15:28 
Für den SQLDataReader sollte meine oben genannte Lösung funktionieren.
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Mo 29.08.11 15:37 
Hi Folks !

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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Mo 29.08.11 16:25 
probiers mal mit eckigen klammern [2]