C# 访问DataReader中的特定行
我有一个数据阅读器,可以在js旋转木马中显示游戏周的列表 我需要能够添加一个if语句来更改当前游戏周的div类 这是我当前的代码:C# 访问DataReader中的特定行,c#,asp.net,sqldatareader,datareader,C#,Asp.net,Sqldatareader,Datareader,我有一个数据阅读器,可以在js旋转木马中显示游戏周的列表 我需要能够添加一个if语句来更改当前游戏周的div类 这是我当前的代码: if (dReader.HasRows) { while (dReader.Read()) { gameweekList.Text += "<div class=\"item\"><h4>Gameweek " + (dReader["gameweekID"].T
if (dReader.HasRows) {
while (dReader.Read()) {
gameweekList.Text += "<div class=\"item\"><h4>Gameweek " +
(dReader["gameweekID"].ToString()) + "</h4></div>";
}
} else {
gameweekList.Text = "Error Finding Gameweeks";
}
dReader.Close();
conn.Close();
if(dReader.HasRows){
while(dReader.Read()){
gameweekList.Text+=“Gameweek”+
(恐惧者[“游戏小子”].ToString())+“”;
}
}否则{
gameweekList.Text=“查找游戏周时出错”;
}
恐惧者。关闭();
康涅狄格州关闭();
实际上,我想添加
if(dreader[1])
然后添加额外的位,这怎么可能呢?我发现使用数据表或数据集更容易。大概是这样的:
DataTable dt = new DataTable();
dt.Load(dreader)
if (dReader.HasRows) {
string previousRead = string.Empty;
dReader.Read();
previousRead = dReader["gameweekID"].ToString();
while (dReader.Read()) {
//use current and previous read
//dReader["gameweekID"].ToString()
//previousRead
//update previousRead for the next read
previousRead = dReader["gameweekID"].ToString();
}
} else {
gameweekList.Text = "Error Finding Gameweeks";
}
dReader.Close();
conn.Close();
然后,您可以使用DataTable.Rows属性更容易地访问某一行。如果我没有弄错的话,您可以像这样计算读卡器的读数。然后,当计数适合您时,您可以添加一些不同的内容:
int count = 0;
if (dReader.HasRows) {
while (dReader.Read()) {
if(count == 1) //add special row
gameweekList.Text += "something special " + dReader["gameweekID"].ToString();
else
gameweekList.Text += "<div class=\"item\"><h4>Gameweek " +
(dReader["gameweekID"].ToString()) + "</h4></div>";
count++;
}
} else {
gameweekList.Text = "Error Finding Gameweeks";
}
dReader.Close();
conn.Close();
那么
if (dReader.HasRows) {
while (dReader.Read()) {
if ( dReader["gameweekID"].ToString() == currentWeekId )
{
gameweekList.Text += "<div class=\"somethingSpecial\"><h4>Gameweek " +
(dReader["gameweekID"].ToString()) + "</h4></div>";
}
else
{
gameweekList.Text += "<div class=\"item\"><h4>Gameweek " +
(dReader["gameweekID"].ToString()) + "</h4></div>";
}
}
} else {
gameweekList.Text = "Error Finding Gameweeks";
}
dReader.Close();
conn.Close();
if(dReader.HasRows){
while(dReader.Read()){
如果(恐惧者[“游戏小子”].ToString()==currentWeekId)
{
gameweekList.Text+=“Gameweek”+
(恐惧者[“游戏小子”].ToString())+“”;
}
其他的
{
gameweekList.Text+=“Gameweek”+
(恐惧者[“游戏小子”].ToString())+“”;
}
}
}否则{
gameweekList.Text=“查找游戏周时出错”;
}
恐惧者。关闭();
康涅狄格州关闭();
要获取第一行,请从0开始,并始终将其放入数据表中,因为直接从数据读取器读取数据时总会遇到问题
if (dReader.HasRows) {
DataTable dt = new DataTable();
dt.Load(dreader)
gameweekList.Text = dt.Rows[0]["gameweekID"]
}
代码
if(可怕的[1])
将获取1
索引中列的值。但你是想在某一排?你想进入下一排吗?只是为了概念,我想进入第一排。但是这个可怕的东西[1]不起作用是的,不起作用的原因是,根据定义,数据读取器一次读取并保存内存中的一行数据。它提供了一个只向前、快速的读卡器,您可以在其中读取数百万行,而不消耗任何重要内存。因此,为了获得下一条记录,您必须发出一个读取
。数据读取器类似于IEnumerable,不支持访问特定索引处的元素。它只能用于迭代项目列表,因此要到达第一行,需要执行Read(),然后应用逻辑。正如尼古拉所说。