如何获取每行C#和SQL中的每个数据

时间:2018-08-31 08:43:20

标签: c# sql winforms

假设我有一个包含3列的表格,如下所示:

string sql = "select * from tbl_Student where ID like '"+ID.Text+"'";

cm = new SqlCommand(sql, cn);
dr = cm.ExecuteReader();

while (dr.Read())
{
    Subject1.Text = dr["Subject"].ToString();
    Subject2.Text = dr["Subject"].ToString();
    Subject3.Text = dr["Subject"].ToString();
}

dr.Close();

如何获得与英语主题,数学,历史等“标记”相对应的主题,以便与列主题的每一行中的ID匹配?因为我只获得第一主题“英语”或第一行。

{{1}}

3 个答案:

答案 0 :(得分:3)

您可以在每个循环中替换Subject.Text的值。这意味着它仅包含最后一个值。

您应该连接字符串

Subject.Text += dr["Subject"].ToString();

答案 1 :(得分:0)

我肯定会将like运算符更改为equal(=)运算符。 而且循环中总是有一个值,将字符串连接起来。

答案 2 :(得分:0)

使用StringBuilder

StringBuilder sb = new StringBuilder();

while (dr.Read())
{
    sb.Append(dr["Subject"].ToString());
    sb.Append(",");

}

result = sb.ToString().TrimEnd(',');

更新

然后使用switch/case确定您的ID并将其值分配给正确的TextBox

while (dr.Read())
{
    string subject = dr["Subject"].ToString();
    switch (dr["ID"].ToString()) 
    {
        case "1":
            Subject1.Text += subject + " ";//$"{subject} "; //or use string builder as I've showed above 
            break;
        case "2":
            Subject2.Text += subject + " ";//$"{subject} ";
            break;
        case "3":
            Subject3.Text += subject + " ";//$"{subject} ";
            break;
        default:
            break;
    }
}

另外,请使用 Parameterized Queries