如何在每次单击按钮后逐行获取访问数据库的值?

时间:2013-06-08 16:22:59

标签: c#

我想通过点击访问数据库表中的按钮逐个问题。每个问题都是一行,希望通过点击下一行中的“next”按钮来获取每个下一个问题。我已经制作了这段代码,但这直接显示了最后一行表格中的最后一个问题。请帮帮我。因为这与我计算机科学学士学位的最后一年项目有关。

这是我的代码:

OleDbConnection con = new OleDbConnection("provider = Microsoft.ACE.OLEDB.12.0; Data source= E:\\sampleDb.accdb");
con.Open();
OleDbCommand cmd = new OleDbCommand ("select Questions from sampletable", con);
OleDbDataReader dr = cmd.ExecuteReader();
int count = dr.FieldCount;
while (dr.Read())
{                   
     for (int i = 0; i < count; i++)
     {
          label1.Text = dr.GetValue(i).ToString();
     }                   
}

dr.Close();
con.Close();

1 个答案:

答案 0 :(得分:1)

  

我已经制作了这段代码,但这直接显示了最后一个问题   最后一行表。

为什么不应该呢?因为您在查询中选择了一列(Questions),但您尝试访问从icount的所有列值。这毫无意义。

假设您有10行返回查询。带有10列的1行。因此,您的count变量将为10。因此,您的while语句将执行for循环10次。

但在for循环中,当i1时,GetValue(1)会尝试查看当前行的第二列值但等待一分钟......! 您的查询中没有第二列!因为您的查询只定义了一列。

这是你的第一个问题。

第二个问题是,您使用Label控件,它只显示文本。使用此代码时,只显示最后一个问题,因为此代码完成后,您的代码只会显示Questions列的最后一个单元格。因为每个循环,你的label1.Text都会改变。所以基本上,在代码的最后,它将显示最后一个问题。

如果您尝试显示所有问题,请选择不同的asp.net控件而不是Label

我相信这种解释对你来说比写一些代码更好。