SqlDataReader returnne une valeur et des types incorrects

Je veux remplir une list avec des objects. Ces objects contiennent des informations au format suivant:

class record { //klassen variable private ssortingng voornaam; private ssortingng recordtype; private decimal gewicht; private ssortingng datum; public ssortingng Voornaam { get { return voornaam; } set { voornaam = value; } } public ssortingng Recordtype { get { return recordtype; } set { recordtype = value; } } public decimal Gewicht { get { return gewicht; } set { gewicht = value; } } public ssortingng Datum { get { return datum; } set { datum = value; } } 

Ces classs seront remplies d'informations provenant d'une table SQL. J'utilise ce code pour get l'information et remplir la list:

 public List<record> GetAllRecords() { List<record> records = new List<record>(); using (SqlConnection Connection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = " + database + "; Integrated Security = True;")) { Connection.Open(); SqlCommand cmd = new SqlCommand(@"SELECT * FROM [records]", Connection); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { ssortingng voornaam = reader.GetSsortingng(1); ssortingng oefening = reader.GetSsortingng(2); decimal gewicht = reader.GetDecimal(3); <--this is the problem ssortingng datum = reader.GetSsortingng(4); record Record = new record(voornaam, oefening, gewicht, datum); records.Add(Record); } } Connection.Close(); return records; } } 

Je fais cela pour remplir une list dans les formulaires Windows avec toutes les informations de class. Cependant, cela n'est pas possible car j'obtiens l'erreur: Impossible de lancer l'object de type 'System.Decimal' pour taper 'System.Ssortingng'.

Je comprends l'erreur, je ne peux pas insert la décimale dans la list, car il doit s'agir d'une string. Mais ma table sql contient un nombre décimal et ma class aussi. Donc je ne peux pas utiliser ToSsortingng() ou le convertir. Dois-je utiliser une autre approche et si oui, comment?

Les colonnes de votre SqlDataReader sont SqlDataReader 0 et non sur 1, donc vous devriez récupérer vos données, en commençant par la colonne 0, pas avec la colonne 1

 ssortingng voornaam = reader.GetSsortingng(0); ssortingng oefening = reader.GetSsortingng(1); decimal gewicht = reader.GetDecimal(2); ssortingng datum = reader.GetSsortingng(3); 

Le message d'erreur vient de dire: vous obtenez une ssortingng de ssortingng ( datum ), mais vous essayez d'get est aussi decimal