如何使用C#显示数据库的下一个数据?
显示来自数据库(MS Access)的数据,我希望在所选数据的末尾显示另一个表格。我试过如果使用循环如何使用C#显示数据库的下一个数据?
private void btnNext_Click(object sender, EventArgs e) //**This will select the next row**
{
currentRow++;
nextRow();
}
private void nextRow()
{
if (currentRow <= n)
{ //**Randomize the RadioButtons.Text**
var row = dTable.Rows[currentRow];
List<string> list = new List<string> { row["C1"].ToString(), row["C2"].ToString(), row["C3"].ToString(), row["C4"].ToString() };
lblQuest.Text = row["QUESTION"].ToString();
btn1.Text = row["C1"].ToString();
btn2.Text = row["C2"].ToString();
btn3.Text = row["C3"].ToString();
btn4.Text = row["C4"].ToString();
var ans = row["ANSWER"].ToString();
var rbtn = new[] { btn1, btn2, btn3, btn4 };
var rnd = new Random();
var shuffTxt = list.OrderBy(x => rnd.Next(list.Count)).ToList();
for (int i = 0; i < rbtn.Length; i++)
{
rbtn[i].Text = shuffTxt[i];
}
}
if (currentRow > n)
{ //**If the currentRow is already greater than the n selected rows, it will display a form**
frmPIPE frm = new frmPIPE();
frm.Show();
Hide();
}
}
但是当currentRow > n
;它显示一个错误
“没有排位置n”
我不知道这是否与基于0索引做的,你需要改变你的代码:
if (currentRow < n)
...
else if (currentRow >= n)
这解决了我的问题。谢谢。但为什么> =条件工作时,我只需要它大于?这让我感到困惑。 –
嗯,我不熟悉你的代码的全部内容,但是使用基于0的索引,假设你有一组排序,[23,34,45],如果你要求位置/索引2处的值,你会得到45,如果你要求位置/索引3的值,你会得到一个类似于你发布的错误信息。所以它是基于0的,这意味着如果您要求位置/索引0处的值,则会得到23(第一个值)。同样,如果你有一个包含50行的结果集/表,它们将被索引为0-49,因此索引50处的行将引发异常。 –
我也修改了我的代码,说第二个语句是else if而不是if。这意味着如果第一个条件为真,则不会检查第二个条件,这不会影响此代码,因为这两个条件是相互排斥的。 –
你的意思是'frmPIPE frm = new frmPIPE();'这一行会引发这个错误?! )。即使没有该代码,也可以使用 –
。当currentRow大于行数时会产生错误。 –
at var row = dTable.Rows [currentRow]; –