Как получить каждый данные в каждой строке C # и SQL - PullRequest
0 голосов
/ 31 августа 2018

Допустим, у меня есть таблица с 3 столбцами, подобная этой:

ID | NAME | Subject
---+------+----------
 1 | Mark | English
 1 | Mark | Math
 2 | Matt | Math
 2 | Matt | English
 1 | Mark | History

Как получить каждый предмет "Mark", такой как английский, математика, история (по порядку), который будет соответствовать их идентификатору в каждой строке в столбце? Потому что я получаю только первый предмет «Английский» или первый ряд.

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 ]

0 голосов
/ 31 августа 2018

Я бы определенно изменил оператор like на оператор равенства (=). И у вас всегда есть одно значение в цикле, объедините строки.

0 голосов
/ 31 августа 2018

Использование StringBuilder:

StringBuilder sb = new StringBuilder();

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

}

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

UPDATE

используйте switch/case затем, чтобы определить свой идентификатор и присвоить его значение правильному 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;
    }
}

Также, пожалуйста, используйте Параметризованные запросы .

0 голосов
/ 31 августа 2018

Вы заменяете значение Subject.Text в каждом цикле. Это означает, что он содержит только последнее значение.

Вы должны объединить строку

Subject.Text += dr["Subject"].ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...