为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
守着星空守着你 2021-12-25 16:22:26
假设我有一个包含 3 列的表,如下所示:ID | NAME | Subject---+------+---------- 1 | Mark | English 1 | Mark | Math 2 | Matt | Math 2 | Matt | English 1 | Mark | History如何获得“标记”的每个主题,如英语、数学、历史(排序依据),这些主题将与主题列中每一行中的 ID 匹配?因为我只得到第一个主题是“英语”或第一行。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();
查看完整描述

3 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

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

你应该连接字符串

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


查看完整回答
反对 回复 2021-12-25
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

使用StringBuilder:


StringBuilder sb = new StringBuilder();


while (dr.Read())

{

    sb.Append(dr["Subject"].ToString());

    sb.Append(",");


}


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

更新

使用switch/casethen 来确定您的 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;

    }

}

另外,请使用参数化查询。


查看完整回答
反对 回复 2021-12-25
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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


查看完整回答
反对 回复 2021-12-25
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信