Я хочу заполнить список объектами. Эти объекты содержат информацию в следующем формате:SqlDataReader возвращает неправильное значение и типы
class record
{
//klassen variable
private string voornaam;
private string recordtype;
private decimal gewicht;
private string datum;
public string Voornaam
{
get { return voornaam; }
set { voornaam = value; }
}
public string Recordtype
{
get { return recordtype; }
set { recordtype = value; }
}
public decimal Gewicht
{
get { return gewicht; }
set { gewicht = value; }
}
public string Datum
{
get { return datum; }
set { datum = value; }
}
Эти классы будут заполнены информацией, поступающей из таблицы SQL. Я использую этот код, чтобы получить информацию и заполнить список:
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())
{
string voornaam = reader.GetString(1);
string oefening = reader.GetString(2);
decimal gewicht = reader.GetDecimal(3); <--this is the problem
string datum = reader.GetString(4);
record Record = new record(voornaam, oefening, gewicht, datum);
records.Add(Record);
}
}
Connection.Close();
return records;
}
}
я делаю это, чтобы заполнить ListBox в окне формы со всей информацией о классе. Однако это невозможно, потому что я получаю сообщение об ошибке: Невозможно применить объект типа «System.Decimal» к типу «System.String».
Я понимаю ошибку, я не могу вставить десятичное число в список, потому что это должна быть строка. Но моя таблица sql содержит десятичное число, и мой класс также делает. Поэтому я не могу использовать ToString()
или конвертировать его. Должен ли я использовать другой подход, и если да, то как?
Чтобы быть ясным, списки не имеют ничего общего с вашей проблемой, и это не важно, но я считаю, что более подходящий термин для того, что вы называете «classes» - это «объекты». Также в будущем попытайтесь опубликовать весь соответствующий код - конструктор для 'record' отсутствует. Хотя это можно сделать из того, что вы показываете, это не всегда так. – pinkfloydx33