Autor |
Beitrag |
thas11
      
Beiträge: 25
|
Verfasst: Di 08.03.11 18:03
Ich habe z.B eine AcessTabelle(TestTabelle) und die hat folgende Spalten
ID|NAME|DESCRIPTION|TAG|DATE
Ich lese die Daten aus dieser Tabelle mit dem OleDBDataReader
Beispielcode
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Private const int COL_ID = 0; Private const int COL_NAME = 1; Private const int COL_DESC = 2; Private const int COL_TAG = 3; Private const int COL_DATE = 4;
...
OldeDdDataReader readData = new OleDbCommand("SELECT * FROM Testtabelle",cConnection).ExecuteReader(); while(readData.Read() == true) { Debug.Print(readData[COL_NAME].ToString());
} |
Nun meine Frage:
Gibt es in C# eine elegantere Lösung meine ColumnIndizes abzuspeichern als über Konstanten?
Danke & lg,
Wolfi
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 08.03.11 18:14
 in der EE!
In einem richtigen Projekt würde niemand mit einem DataReader arbeiten, aber das war ja anscheinend nicht die Frage  : Für solche Konstanten bieten sich enums an, deren Werte entweder implizit von 0 an hochgezählt oder explizit festgelegt werden. An den Wert kommst du dann per Cast nach int, weitere Informationen findest du in der Hilfe.
_________________ >λ=
|
|
thas11 
      
Beiträge: 25
|
Verfasst: Di 08.03.11 18:33
Hallo!
Erst mal danke für die rasche Antwort!
Mit Enums hab ichs schon probiert aber dann das ganze wieder auf einen int zu Casten finde ich auch nicht wirklich elegant....
Nun hab ich meine Konstanten in eine struct gepackt. Was halten erfahrene C# Programmierer davon?
Was spricht gegen einen DataReader? Ich Hantiere mit sehr großen Datenmengen und da erscheint mir der DataReader nicht unvernünftig, da ich nicht alle Daten auf einmal in den Speicher lese sondern kann Datenreihe für Datenreihe durchiterieren... Aber falls du mir etwas besseres empfiehlst bin ich dir natürlich dankbar
mfg & Danke,
Wolfi
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 08.03.11 19:41
|
|
thas11 
      
Beiträge: 25
|
Verfasst: Di 08.03.11 20:30
Hallo Sebastian!
Abermals danke für deine Antwort.
Da ich natürlich auch was dazulernen möchte, würde mich interessieren warum eine statische Klasse passender ist als eine Struct?
Danke & lg,
Wolfi
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 08.03.11 20:42
Wie gesagt, falls du das so meintest:
C#-Quelltext 1: 2: 3: 4:
| struct Columns { public const int Id = 0; ... } |
dann frage dich, wofür du Instanzen dieses Structs benötigst  .
_________________ >λ=
|
|
thas11 
      
Beiträge: 25
|
Verfasst: Di 08.03.11 20:58
Hi Sebastian!
Wie du schon richtig vermutet hast geht es mir im eine gemeinsame Präfix  , da ich einige Tabellen habe und ich damit eine bessere Übersichtlichkeit bekomme...
Ich verstehe nicht was dann der Vorteil einer statischen Klasse wäre... Kommt ja auf dasselbe oder irre ich mich ???
Danke & lg,
Wolfi
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 09.03.11 00:31
Ich weiß nicht, wie ich meine Frage umformulieren soll - wenn dein Struct tatsächlich so aussieht, wofür solltest du dann Objekte davon brauchen?`
_________________ >λ=
|
|
thas11 
      
Beiträge: 25
|
Verfasst: Mi 09.03.11 13:24
Hallo Sebastian!
Mein Struct sieht folgendermaßen aus..
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| struct TABEL_NAME_COL { public const int ID = 0; public const int NAME = 1; public const int STATUS = 2; public const int TAG = 3; }
TABLE_NAME_COL.ID
lg & Danke, Wolfi |
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 09.03.11 13:59
Zitat: | Eigentlich wie bei einer Statischen Klasse und ich lege auch kein eigenes Objekt dafür an ..... |
Eben, wofür also das Instanzieren überhaupt zulassen? Wärest du nicht verwundert, wenn System.Math ein Struct wäre?
PS: Die Namenskonvention von .NET entspricht der in meinem Beispiel  .
_________________ >λ=
|
|
thas11 
      
Beiträge: 25
|
Verfasst: Mi 09.03.11 15:27
Hi!
Ok ich glaub jetzt verstehe ich worauf du hinauswillst...
Es wäre theoretisch eine Instanzierung möglich aber wenn ich eine solche nicht mache ist das Verhalten das gleiche wie bei einer Statischen Klasse...
Danke für deine Hilfe und Geduld!
lg,
Wolfi
|
|
stendate
      
Beiträge: 19
Erhaltene Danke: 1
|
Verfasst: Do 10.03.11 23:35
|
|
thas11 
      
Beiträge: 25
|
Verfasst: Do 17.03.11 17:49
Hi stendate!
Danke für deine Antwort!
Das man mir den Spaltennamen auch zugreifen kann wusste ich aber da es mit stark um Performance geht hab ich mich für den Zugriff über den Index entschlossen...
Bringt jetzt nicht enorm viel aber in der Summe zahlt es sich aus....
lg,
Wolfi
|
|
stendate
      
Beiträge: 19
Erhaltene Danke: 1
|
Verfasst: Do 17.03.11 23:30
thas11 hat folgendes geschrieben : | Hi stendate!
Bringt jetzt nicht enorm viel aber in der Summe zahlt es sich aus....
|
Ist der Unterschied messbar? *fg*
Ich denke mal dass die Konvertierung mittels .ToString() hierbei das Meiste kosten dürfte.
|
|