C# 数据读取器和列表
我正在尝试创建一个列表,如下所示,并使用datareader中的值对其进行更新。我需要帮助编写代码,从数据读取器更新此列表C# 数据读取器和列表,c#,asp.net,.net,ado.net,C#,Asp.net,.net,Ado.net,我正在尝试创建一个列表,如下所示,并使用datareader中的值对其进行更新。我需要帮助编写代码,从数据读取器更新此列表 internal IList<FilingDto> LoadStatusDtofromReader(IDataReader reader) { IList<FilingDto> filingstatus = new List<FilingDto>(); while (rea
internal IList<FilingDto> LoadStatusDtofromReader(IDataReader reader)
{
IList<FilingDto> filingstatus = new List<FilingDto>();
while (reader !=null && reader.Read())
{
var dto = new FilingDto();
var Year = (Decimal)reader["Year"];
dto = new FilingDto()
{
Controllerid = (Guid)reader["Collectorid"],
Status = DBNull.Value.Equals(reader["Status"]) ? string.Empty : reader["Status"].ToString(),
Year = Convert.ToInt32(Year),
Level = DBNull.Value.Equals(reader["Level"]) ? string.Empty : reader["ServiceLevel"].ToString()
};
filingstatus.Add(dto);
}
return status;
}
试试这个
DataTable FilingStatus = new DataTable("FilingStatus");
SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["CentralW2Database"].ConnectionString);
sqlcon.Open();
SqlCommand cmd = new SqlCommand("select CollectorGuid, FileStatus,FilingYear, ServiceLevel from dbo.FilingRequestQueue", sqlcon);
using (var dr = cmd.ExecuteReader())
{
IList<FilingDto> list = LoadStatusDtofromReader(dr);
}
internal IList<FilingDto> LoadStatusDtofromReader(IDataReader reader)
{
var filingstatus = new List<FilingDto>();
while (reader != null && reader.Read())
{
var dto = new FilingDto
{
Controllerid = (Guid)reader["Collectorid"],
Status = DBNull.Value.Equals(reader["Status"]) ? string.Empty : reader["Status"].ToString(),
Year = Convert.ToInt32((Decimal)reader["Year"]),
Level = DBNull.Value.Equals(reader["Level"]) ? string.Empty : reader["ServiceLevel"].ToString()
};
filingstatus.Add(dto);
}
return filingstatus;
}
DataTable FilingStatus=新数据表(“FilingStatus”);
SqlConnection sqlcon=新的SqlConnection(ConfigurationManager.ConnectionString[“CentralW2Database”].ConnectionString);
sqlcon.Open();
SqlCommand cmd=new-SqlCommand(“从dbo.FilingRequestQueue中选择CollectorGuid、FileStatus、FilingYear、ServiceLevel”,sqlcon);
使用(var dr=cmd.ExecuteReader())
{
IList list=LoadStatusDtofromReader(dr);
}
内部IList LoadStatusDtofromReader(IDataReader阅读器)
{
var filingstatus=新列表();
while(reader!=null&&reader.Read())
{
var dto=新文件dto
{
Controllerid=(Guid)读卡器[“Collectorid”],
Status=DBNull.Value.Equals(读卡器[“状态”])?string.Empty:读卡器[“状态”]。ToString(),
年份=转换.ToInt32((十进制)读取器[“年份]),
Level=DBNull.Value.Equals(reader[“Level”])?string.Empty:reader[“ServiceLevel”]。ToString()
};
文件状态。添加(dto);
}
返回文件状态;
}
您应该在SqlCommand对象上调用ExecuteReader
SqlCommand cmd = new SqlCommand("select Collectorid, Status, Year, Level from dbo.abc", sqlcon);
SqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
我建议使用类似ORM的实体框架,而不是ADO.NET,如果您可以重用原始功能,只需执行以下操作
using (DataReader dr = cme.ExecuteReader())
{
IList<FilingDto> list = LoadStatusDtofromReader(dr);
}
使用(DataReader dr=cme.ExecuteReader())
{
IList list=LoadStatusDtofromReader(dr);
}
代码正确。但是你应该返回'filingstatus'而不是'status'。你读过Datareader类的文档和示例了吗?有示例…您正在返回一个未声明的变量status
。请发布至少有机会编译的内容。另外,如果要使用数据读取器
,为什么要声明数据表
?查看一下。好的,我了解了创建列表的相关知识,但是如何将数据读取器中的值读入该列表SqlConnection sqlcon=new SqlConnection(ConfigurationManager.Connectionstring[“Connectionstring”].Connectionstring);sqlcon.Open();SqlCommand cmd=newsqlcommand(“从dbo.abc中选择Collectorid、状态、年份、级别”,sqlcon);使用(IDataReader dr=谢谢。但是现在您可以帮助我从数据读取器读取值并填充列表SqlConnection sqlcon=new SqlConnection(配置管理器.ConnectionStrings[“CentralW2Database”].ConnectionString);sqlcon.Open();SqlCommand cmd=new SqlCommand(“从dbo.FilingRequestQueue中选择CollectorGuid、FileStatus、FilingYear、ServiceLevel”,sqlcon);IDataReader dr=cmd.ExecuteReader();while(dr.Read()){我在这一点上遇到了一个难题。如何像现在这样填充列表。filingstatus.Add(dto)@RashmiKR,编辑了我的帖子。请立即尝试。谢谢我需要将值添加到我的列表中,而不是将其作为输出写入。我该怎么做?我需要将此表中的值添加到我的列表中。请帮助我,如果您使用“using”关键字,如“..”using(SqlDataReader=cmd.ExecuteReader()),则无需显式调用.Close() {...} "
using (DataReader dr = cme.ExecuteReader())
{
IList<FilingDto> list = LoadStatusDtofromReader(dr);
}