Как преобразовать столбец из таблицы в наборе данных в строку, разделенную запятыми в C #?

#c# #database #windows-forms-designer #ms-access-2016

#c# #База данных #windows-forms-designer #ms-access-2016

Вопрос:

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

Я уже понимаю, как отправлять письма, и даже успешно провел тесты, но я не понимаю, как преобразовать столбец, в котором есть все идентификаторы электронной почты, в строку, разделенную запятыми.

Я также немного смущен, если этот код находится внутри кода forms или где-то еще.

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

Я также немного прочитал linq, но я не мог понять, где даже реализовать такой код в моей программе.

Вот код для кнопки отправки электронной почты:

 private void button1_Click(object sender, EventArgs e)
{
    try
    {
        MailMessage mail = new MailMessage();
        SmtpClient smtpserver = new SmtpClient("smtp.gmail.com");

        mail.From = new MailAddress("latinaultimatesite@gmail.com");

        mail.To.Add("diomidiov@gmail.com,ninjaboy.abel@gmail.com");
        mail.Subject = "Que xopa";
        mail.Body = "probando 1 2 3";

        smtpserver.Port = 587;
        smtpserver.Credentials = new 
        System.Net.NetworkCredential("latinaultimatesite@gmail.com","proyectofinal69lus");
        smtpserver.EnableSsl = true;

        smtpserver.Send(mail);
        MessageBox.Show("mail Send");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}
  

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

Комментарии:

1. перебирайте строки и используйте конкатенацию строк (или конструктор строк) для добавления каждой строки из базы данных вместе с запятой. Убедитесь, что запятая в конце удаляется по завершении цикла.

2. не могли бы вы привести простой пример, чтобы увидеть, как это будет выглядеть?

3. было бы сложно, поскольку вы не указали в предоставленном коде, как вы получили доступ к строкам в столбце. Являются ли они частью a OledbDataReader или a DataSet Также, ваш пример для каждого поможет нам помочь вам лучше.

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

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

Ответ №1:

Непонятно, почему вы просто не запрашиваете эту информацию в базе данных. Однако, если у вас уже есть DataTable then , как указывали другие, вам нужно будет перебрать DataTable.Rows коллекцию и захватить ячейку адреса электронной почты из этой строки, добавить запятую, затем продолжить это для всех строк в таблице. A StringBuilder может быть полезно для построения этой строки электронной почты, разделенной запятыми. Это может выглядеть примерно так, как показано ниже…

 private string GetEmailAddress(DataTable dt) {
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < dt.Rows.Count; i  ) {
    sb.Append(dt.Rows[i]["Email"].ToString());
    if (i < dt.Rows.Count - 1)
      sb.Append(",");
  }
  sb.AppendLine();
  return sb.ToString();
}
  

Комментарии:

1. Спасибо за пример, я попробую его реализовать. но пока это ответ.

Ответ №2:

Насколько я понимаю, вы должны попытаться разделить эту строку, а затем добавить каждое электронное письмо, которое я бы отправил в предложение «Кому».

Один пример проиллюстрирован здесь:-

https://www.c-sharpcorner.com/UploadFile/0c1bb2/sending-email-to-multiple-recipeint-using-Asp-Net/

Комментарии:

1. Я думаю, вы неправильно поняли вопрос. Приведенный вами пример не объясняет основную проблему. Как извлечь данные из базы данных и построить список получателей из этих данных.

2. Точно, Стив, это то, что я хочу знать, я не понимаю, как построить список.