如何使用C#从数据表中选择数据库的第一行数据?

时间:2017-10-09 14:22:06

标签: c# database visual-studio

如何选择数据表中的第一行数据?并在标签盒和radiobuttons上显示内容?

OleDbDataAdapter dAdap = new OleDbDataAdapter(command);
DataTable dTable = new DataTable();
dAdap.Fill(dTable);
foreach(DataRow row in dTable.Rows)
{
    question = row["QUESTION"].ToString();
    c1 = row["C1"].ToString();
    c2 = row["C2"].ToString();
    c3 = row["C3"].ToString();
    c4 = row["C4"].ToString();
    ans = row["ANSWER"].ToString(); 
}
lblQuest.Text = question;
btnA.Text = c1;
btnB.Text = c2;
btnC.Text = c3;
btnD.Text = c4;

我试过这段代码,但它只显示最后一行。当我尝试重新运行查询时。它没有刷新/替换/覆盖值,它只显示第一个查询的最后一行。

编辑:

i = 0;
x = 0;
lblQuest.Text = dTable.Rows[i].Field<string>(x);
btnA.Text = dTable.Rows[i].Field<string>(x + 1);
btnB.Text = dTable.Rows[i].Field<string>(x + 2);
btnC.Text = dTable.Rows[i].Field<string>(x + 3);
btnD.Text = dTable.Rows[i].Field<string>(x + 4);

3 个答案:

答案 0 :(得分:0)

是的,因为变量将在每次迭代时被覆盖,并且最终只有最后一次迭代的值

答案 1 :(得分:0)

如果您只想选择第一行值,请使用dTable[0][ColumnIndex]

要在按钮上加载下一行,请执行以下操作:

int currentRow = 0;
DataTable myDt;

private void LoadNextRow()
{
    currentRow++;
    myLabel.Text = myDt[currentRow]["MyColumn"].ToString();
}

private void OnButtonClick(....)
{
    LoadNextRow();
}

答案 2 :(得分:0)

您的问题是每个循环都会覆盖您的变量。一旦循环遍历整个DataTable,它就会以最后一行结束,只显示该行。

要获得所需的功能,您需要将DataTable存储为属性而不是本地变量。

此处的一种方法是跟踪您当前正在查看的行。然后当单击下一个按钮时,只需++当前数字并重新分配值。

import {ListItem} from './ListItem';

export class DirectoryListItem {
    constructor(
        public listIt: ListItem; 
        // instead of repeating code, you inject your base-obj listItem
        public firstName: string,
        public lastName: string,
        public mobileNumber: string,
        public internalNumber: string,
    ) { } 
}