繁体   English   中英

使用C#在文本框的foreach或while循环中显示行来遍历MySql数据库

[英]Iterate through MySql database using C# displaying rows in textbox's foreach or 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();
            }
        }
    }
foreach(var item in dataRow.ItemArray)

应该:

foreach(var item in dr.ItemArray)

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

看来您有一些问题。 首先,您的内循环似乎不是必需的。 其次,即使您特别将行索引传递到方法中,外部循环也会遍历所有行。 最后,似乎您在分配变量之前正在使用“ 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();
}

不知道为什么不用这种方法传递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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM