miss786 Ответов: 1

Как заставить запрос возвращать более 1 записи?


Я хотел бы, чтобы мой метод возвращал более одного результата запроса. текущий метод, выводит только 1 запись. Пожалуйста, посоветуйте - спасибо

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

SqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        string title = reader.GetString(0);  
                        string body = reader.GetString(4);

                        string pub = reader["publication_id"].ToString();
                        string iss = reader["issue_id"].ToString();
                        string sid = reader["STORYID"].ToString(); 


                        string c = url(title, pub, iss, sid);

            DateTime dt = DateTime.Today;

            XElement xeRoot = new XElement("article");

            XElement xeStatus = new XElement("status", "Approved");
            xeRoot.Add(xeStatus);

            XElement xeTitle = new XElement("title", title);
            xeRoot.Add(xeTitle);

            XElement xeSubTitle = new XElement("subtitle", title);
            xeRoot.Add(xeSubTitle);

            XElement xeSynopsis = new XElement("synopsis", body + "...");
            xeRoot.Add(xeSynopsis);

            XElement xeURL = new XElement("url", c);
            xeRoot.Add(xeURL);

            XElement xeDisplayDate = new XElement("display_date", dt);
            xeRoot.Add(xeDisplayDate);

            XDocument xDoc = new XDocument(xeRoot);
            return xDoc.ToString();

                    }
                }
            }
            return null;
      
        }

PIEBALDconsult

Откуда ты знаешь, что это не так? Вам понадобятся места, чтобы их разместить.

1 Ответов

Рейтинг:
5

OriginalGriff

Ну что ж ... давайте вырвем какой-нибудь код из вашего образца:

SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    string title = reader.GetString(0);  
    ...
    XDocument xDoc = new XDocument(xeRoot);
    return xDoc.ToString();

}
Вы возвращаетесь из метода в конце первого цикла...


miss786

Привет, спасибо за ваше предложение и помощь. Я немного неясен в отношении вашего решения. Должен ли я возвращать метод вне цикла? Спасибо

OriginalGriff

Что ж, это поможет ... как только ваш код встретит оператор return, все-метод закончен. Поэтому, если ваш цикл заканчивается возвращением, он всегда будет выходить в конце первой строки.
Но... похоже, что вы вообще не думали об этом коде - код внутри цикла не выглядит так, как будто он делает что-то, что можно "перенести" на следующую итерацию.
Как будто ты сказал:

int i = 0;
в то время как (читатель. читать())
{
i = (int) reader ["значение"];
}

Значение i всегда будет значением последней строки в считывателе, потому что оно перезаписывает это значение каждый раз, когда проходит по циклу.

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