假设我有一个包含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}}
答案 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 。