ChristianR1905
Grünschnabel
Hallo,
ich habe ein vermutlich sehr einfaches Problem, komme aber grad nicht auf eine elegante Variante. Ich frage eine Tabelle nach Felder ab (immer mit * in der aktuellen Version).
Nun weiß ich vorher nicht welche Felder ich zurück kriege, das hängt stark von der Tabelle ab. Ich weiß nur eins, es sind ziemlich viele. Ich weiß, von der Performance her sollte ich nur die holen die ich brauche, aber im aktuellen Entwicklungsstadium ist mir das zu mühsam.
Ich weiß schon wie ich die Namen der Spalten erhalte:
Auch der Datentyp der Spalte ist kein Problem:
Auch eine Hilfsfunktion die mit dem Index für einen Namen gibt hab ich schon:
Und zu guter Letzt hab kann ich natürlich manuell Folgendes machen:
Aber, wie der Experte sicher schon merkt, das ist unglaublich unelegant. Ich würde gerne einfach die eine Zeile aus der Datenbank in einer Art Datenstruktur speichern wo ich per String als Key auf gemischte Objekte zugreifen kann. Ok, ich hab grad ne Idee gehabt.. Ich poste das dennoch einmal, ich find die Beispiele oben ganz nett. Wenn ich meine Idee ausprobiert hab meld ich mich nochmal...
ich habe ein vermutlich sehr einfaches Problem, komme aber grad nicht auf eine elegante Variante. Ich frage eine Tabelle nach Felder ab (immer mit * in der aktuellen Version).
Nun weiß ich vorher nicht welche Felder ich zurück kriege, das hängt stark von der Tabelle ab. Ich weiß nur eins, es sind ziemlich viele. Ich weiß, von der Performance her sollte ich nur die holen die ich brauche, aber im aktuellen Entwicklungsstadium ist mir das zu mühsam.
Ich weiß schon wie ich die Namen der Spalten erhalte:
Code:
for (int i = 0; i < reader.FieldCount; i++)
Console.WriteLine("ColHeader" + reader.GetName(i));
Auch der Datentyp der Spalte ist kein Problem:
Code:
for (int i = 0; i < reader.FieldCount; i++)
Console.WriteLine("Type " +
reader.GetProviderSpecificFieldType(i));
Auch eine Hilfsfunktion die mit dem Index für einen Namen gibt hab ich schon:
Code:
public static int NameToInt(string name, MySqlDataReader reader)
{
for (int i = 0; i < reader.FieldCount; i++)
if (reader.GetName(i) == name) return i;
return -1;
}
Und zu guter Letzt hab kann ich natürlich manuell Folgendes machen:
Code:
uid = dbEntry.GetInt32(
DBConnector.NameToInt("uid", dbEntry)
);
Aber, wie der Experte sicher schon merkt, das ist unglaublich unelegant. Ich würde gerne einfach die eine Zeile aus der Datenbank in einer Art Datenstruktur speichern wo ich per String als Key auf gemischte Objekte zugreifen kann. Ok, ich hab grad ne Idee gehabt.. Ich poste das dennoch einmal, ich find die Beispiele oben ganz nett. Wenn ich meine Idee ausprobiert hab meld ich mich nochmal...