Как SQL SELECT и цикл по каждой строке результатов с кодом? - PullRequest
1 голос
/ 20 августа 2010

Я пытаюсь в c # просто извлечь набор строк из базы данных SQL и выполнить каждую строку. Я получаю результат с некоторым кодом, который будет отправлять мне электронное письмо один раз для каждой возвращенной строки.

приведенный ниже код должен работать, насколько я могу судить, и не возвращает ошибок, я в тупике. Вы можете предположить, что "ConnectionString" является допустимым и используется во многих местах на сайте, и что запрос, как определено там, обязательно должен вернуть обратно строку из моей БД, поскольку я проверил точно такую ​​же строку, выполнив ее сырая БД с sql mgmt studio express и я получаю ожидаемые результаты.

все, что я получаю, - это единственное электронное письмо "Я попал сюда", которое происходит перед тем, как я пытаюсь войти в цикл.

Был бы очень признателен за понимание более умных людей, спасибо, ребята!

string query4 = "SELECT TOP(1)* FROM subscribers WHERE subscriber = 'test'";

string number; string pix; string watcheremail; string watcher;

MailMessage message25 = new MailMessage();
message25.From = new MailAddress("no-reply@local.com");
message25.To.Add(new MailAddress("myemailaddress"));
message25.Body = "i got here";
SmtpClient client25 = new SmtpClient();
client25.Send(message25);
using (SqlConnection connection = new SqlConnection("ConnectionString"))
{
    connection.Open();
    using (SqlDataAdapter people = new SqlDataAdapter(query4, connection))
    {
        DataTable people1 = new DataTable();
        people.Fill(people1);

        foreach (DataRow row in people1.Rows)
        {
            watcher = row["subscriber"].ToString();
            MailMessage message252 = new MailMessage();
            message252.From = new MailAddress("no-reply@local.com");
            message252.To.Add(new MailAddress("myemailaddress"));
            message252.Body = "AND THEN I GOT HERE TOO - " + watcher;
            SmtpClient client252 = new SmtpClient();
            client252.Send(message252);
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

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

  • Переместите курсор в место в коде до в место, где вы думаете, что это можетбыть проблемой.(В вашем примере перейдите к первой строке. Начните сверху.)
  • Нажмите F9.Линия станет красной.Это называется «точкой останова»: она сообщает Visual Studio, что вы хотите остановиться здесь, когда программа достигнет этой точки.
  • Нажмите F5.Это запускает вашу программу.Делайте все, что необходимо в вашей программе, чтобы привести ее к точке, где у вас есть красная линия (точка останова).
  • Вы заметите, что Visual Studio внезапно достигает вершины.Линия, которая была красной, теперь желтая.Это потому, что в данный момент выполняется строка.Программа остановилась прямо здесь, и теперь вы можете проверить, как она работает с этого момента.
  • Нажмите F10.Вы заметите, что желтая линия опускается на одну команду.Нажмите F10 несколько раз, и он будет последовательно проходить через код.
  • В каждой точке вы можете навести указатель мыши на переменные.Вы заметите, что он показывает вам значение каждой переменной.
  • Когда вы думаете, что нашли ошибку и вам нужно отредактировать код, нажмите Shift + F5.Это убьет программу.Затем вы можете отредактировать свой код и снова нажать F5, чтобы запустить отредактированную версию.
  • Если вам больше не нужна точка останова, просто снова нажмите F9 в той же строке, и она исчезнет.

Также посмотрите на меню «Отладка» и его подменю «Windows», , пока вы проходите через программу (т.е. когда где-то есть желтая линия).Если вы любите экспериментировать и играть, попробуйте их, особенно «Авто», «Местные жители» и «Стек вызовов».Веселитесь!

0 голосов
/ 20 августа 2010

Вот несколько советов, которые могут помочь ...

  1. Вы запускаете это в консольном приложении? Если это так, замените отправку электронной почты на Console.WriteLine («Some Text»), и это поможет вам понять, куда попадает код без использования отладчика.

  2. Вы выбрали топ 1 * из числа подписчиков ... Вы уверены, что запрос возвращает результаты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...