NerakSeven Ответов: 1

Почему мой код читает только одну строку?


В моей таблице есть 10 записей, и когда я использую свой метод, у меня есть только "0", что означает только чтение одной записи, потому что только первое поле строки равно нулю, а другие поля не равны нулю

Запрос

string query = "SELECT * FROM Movies";


Что я уже пробовал:

using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {

                        if (string.IsNullOrEmpty(sdr["Code"].ToString()))
                        {
                            C_E = "0";
                            this.Update(C_E);
                            //ViewBag.Message = "cero";
                        }
                        else
                        {
                            C_E = sdr["Code"].ToString();
                            this.Update(C_E);
                            // ViewBag.Message = C_E;
                        }


                    }

F-ES Sitecore

Первое, что вам нужно сделать, - это не полагаться на предположения. Ваше предположение, что вы обрабатываете только одну строку, вероятно, неверно и мешает вам решить реальную проблему. Используйте отладчик для пошагового просмотра кода строка за строкой, чтобы увидеть, что он делает. Проблема, скорее всего, находится внутри метода обновления.

Richard Deeming

Репост
Вы уже разместили это в разделе ASP.NET форум:
https://www.codeproject.com/Messages/5566568/Why-my-code-only-read-one-row.aspx[^]

1 Ответов

Рейтинг:
0

OriginalGriff

Проблема не в количестве считываемых строк - хотя без ваших данных мы не можем это проверить, в таблице "фильмы" может быть только одна строка, - а в том, что C_E при выходе из цикла всегда будет иметь одно и то же значение - последнее значение, считанное из данных.
Я понятия не имею, что у тебя за дела. Update метод делает это, но если вы хотите собрать все значения из вашей БД, вам нужно сделать что-то вроде этого:

using (SqlDataReader sdr = cmd.ExecuteReader())
{
    StringBuilder sb = new StringBuilder();
    while (sdr.Read())
    {
        string temp = sdr["Code"].ToString();
        if (string.IsNullOrEmpty(temp))
        {
            sb.Append("0");
        }
        else
        {
            sb.Append(temp);
        }
        this.Update(temp);
    }
    C_E = sb.ToString();
}