使用C#在textbox的foreach或while循环中显示行来迭代MySql数据库

时间:2015-11-16 22:13:05

标签: c# mysql sql foreach while-loop

我的应用程序遇到了一些问题,我连接了数据库并且已经显示了数据库中第一行的值,但是我需要让数据库遍历每一行并相应地显示它们之前在那里,理想情况下被计时器推迟了

我认为这是正确的方法,但它似乎不正确,因为现在它没有显示任何东西,并给了我一个System.NullReferenceException。我试图解决这个问题,但似乎没有运气。如果你可以推荐一些东西可以阅读,那将是非常有帮助的,因为我的具体问题在互联网上看不到很多

任何帮助都会很好,第一次在这里张贴,如果事情的格式错误,那就很抱歉。

    private void FillInTextFields(DataTable table, int ind)
    {
        foreach(DataRow dr in table.Rows)
        {
            foreach(var item in dataRow.ItemArray)
            {
                dataRow = table.Rows[ind];
                txtNHSNumber.Text = dataRow.ItemArray.GetValue(0).ToString();
                txtFirstName.Text = dataRow.ItemArray.GetValue(1).ToString();
                txtLastName.Text = dataRow.ItemArray.GetValue(2).ToString();
                txtTimeDate.Text = dataRow.ItemArray.GetValue(3).ToString();
                txtHeartRate.Text = dataRow.ItemArray.GetValue(4).ToString();
                txtTemp.Text = dataRow.ItemArray.GetValue(5).ToString();
                txtReps.Text = dataRow.ItemArray.GetValue(6).ToString();
                txtDia.Text = dataRow.ItemArray.GetValue(7).ToString();
                txtSys.Text = dataRow.ItemArray.GetValue(8).ToString();
            }
        }
    }

3 个答案:

答案 0 :(得分:1)

foreach(var item in dataRow.ItemArray)

应该是:

foreach(var item in dr.ItemArray)

可以在循环结束时进行睡眠,以便在返回顶部之前进行延迟。

答案 1 :(得分:0)

看来你有一些问题。首先,你的内循环似乎没有必要。其次,外部循环遍历所有行,即使您专门将行索引传递给方法。最后,似乎你在分配之前使用了你的“dataRow”变量,尽管我必须看到更多的代码才能确定。考虑一下:

private void FillInTextFields(DataTable table, int ind)
{
    dataRow = table.Rows[ind];
    txtNHSNumber.Text = dataRow.ItemArray.GetValue(0).ToString();
    txtFirstName.Text = dataRow.ItemArray.GetValue(1).ToString();
    txtLastName.Text = dataRow.ItemArray.GetValue(2).ToString();
    txtTimeDate.Text = dataRow.ItemArray.GetValue(3).ToString();
    txtHeartRate.Text = dataRow.ItemArray.GetValue(4).ToString();
    txtTemp.Text = dataRow.ItemArray.GetValue(5).ToString();
    txtReps.Text = dataRow.ItemArray.GetValue(6).ToString();
    txtDia.Text = dataRow.ItemArray.GetValue(7).ToString();
    txtSys.Text = dataRow.ItemArray.GetValue(8).ToString();
}

您只需要使用要显示的特定索引调用此方法。

您还可以删除ItemArray.GetValue内容,然后继续使用:

private void FillInTextFields(DataTable table, int ind)
{
    dataRow = table.Rows[ind];
    txtNHSNumber.Text = dataRow[0].ToString();
    txtFirstName.Text = dataRow[1].ToString();
    txtLastName.Text = dataRow[2].ToString();
    txtTimeDate.Text = dataRow[3].ToString();
    txtHeartRate.Text = dataRow[4].ToString();
    txtTemp.Text = dataRow[5].ToString();
    txtReps.Text = dataRow[6].ToString();
    txtDia.Text = dataRow[7].ToString();
    txtSys.Text = dataRow[8].ToString();
}

答案 2 :(得分:0)

不确定为什么要在此方法中传递int ind,不需要它。

private void FillInTextFields(DataTable table)
{
    txtNHSNumber.Text = table.Rows[0].ItemArray[0];
    txtFirstName.Text = table.Rows[0].ItemArray[1];
    txtLastName.Text = table.Rows[0].ItemArray[2];
    txtTimeDate.Text = table.Rows[0].ItemArray[3];
    txtHeartRate.Text = table.Rows[0].ItemArray[4];
    txtTemp.Text = table.Rows[0].ItemArray[5];
    txtReps.Text = table.Rows[0].ItemArray[6];
    txtDia.Text = table.Rows[0].ItemArray[7];
    txtSys.Text = table.Rows[0].ItemArray[8];
}