gpt4 book ai didi

c# - SqlDataReader 返回不正确的值和类型

转载 作者:行者123 更新时间:2023-11-30 20:32:25 25 4
gpt4 key购买 nike

我想用对象填充列表。这些对象包含以下格式的信息:

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;
}
}

我这样做是为了用所有类信息填充 Windows 窗体中的列表框。然而,这是不可能的,因为我收到错误:无法将类型为“System.Decimal”的对象转换为类型“System.String”。

我理解这个错误,我不能在列表中放入小数,因为它必须是一个字符串。但是我的 sql 表包含一个小数点,我的类(class)也有。所以我不能使用 ToString() 或转换它。我应该使用另一种方法吗?如果是的话如何?

最佳答案

SqlDataReader 的列是从 0 开始的,而不是从 1 开始的,因此您应该检索数据,从第 0 列开始,而不是从第 1 列开始

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

错误消息只是说以下内容:您正在获取 string 列(datum),但您试图获取的是 decimal

关于c# - SqlDataReader 返回不正确的值和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com