verwendetes Datenbanksystem: <MySQL>
Hallo,
ich habe ein Select,aus dem würde ich gerne Daten direkt in ein Objekt geben (Liste etc.)
Momentan lese ich nur die Zeilen aus:
MySqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM users1";
MySqlDataReader Reader;
connection.Open();
Reader = command.ExecuteReader();
string row = "";
while (Reader.Read())
{
row = "";
for (int i = 0; i < Reader.FieldCount; i++)
row += Reader.GetValue(i)+",";
}
return row;
Wie mache ich das?
Unsere Website
iPhone Programmierung | Android Programmierung
Hallo
Schau dir mal O/R-Mapper wie NHibernate an. Ansonsten kannst du aber natürlich auch mit reader.GetString(i)/GetInt32(i)/.... in Properties eines Objektes mappen, statt einen String zusammenzuhängen.
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Nja, ich habe mir gedacht, vl. kann man eine solche zeile direkt in ein objekt reinlesen
struct xx{
int as;
string cx;
string kf;
}
usw.
Unsere Website
iPhone Programmierung | Android Programmierung
Wie schon gesagt, ein ORM würde das für dich übernehmen, wenn du native ADO.NET verwendest musst du's selbst mappen.
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Wenn du den OR-Mapper umgehen willst dann passe doch deine Reader-Funktionalität an. Wie Florian schon sagte, befülle einfach damit die Properties deines Objekts. Kleines Beispiel:
class Person
{
int ID{ get; set; }
string Name { get; set; }
}
Und im Reader dann so:
while (Reader.Read())
{
person.ID = Convert.ToInt32(Reader["id"]);
person.Name = Reader["name"].ToString();
}
Und im Reader dann so
Oder via Reflection (z.B. indem du Propertynamen auf Spaltennamen mappst).
Und für die, die nicht auf grosse ORMapper stehen, gibt es Micro-ORMs wie Dapper oder PetaPoco