none
Как данные из таблицы записать в масив C# RRS feed

  • Вопрос

  • Здраствуйте, имеется  БД ACCESS из таблицей Contacts:

    Подскажите, как вытащить конкретные данные (все адриса електронной почти)  и записать в массив?

    P.S. пожалуйста, если можно пример кода.
    22 апреля 2013 г. 12:47

Ответы

  • Вот, примерно так:

    using System;
    using System.Collections.Generic;
    using System.Data.OleDb;
    
    class Programm1
    {
    	static void Main()
    	{
    		String connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db\test.mdb";
    		OleDbConnection con = new OleDbConnection(connectionString);
    		List<String> emails = new List<String>();
    		using(con)
    		{
    			con.Open();
    			OleDbCommand cmd = new OleDbCommand("SELECT email FROM emails", con);
    			OleDbDataReader reader = cmd.ExecuteReader();
    			while(reader.Read())
    			{
    				emails.Add(reader.GetString(0));
    			}
    		}
    		
    		foreach(String email in emails)
    			Console.WriteLine(email);
    	}
    }

    • Предложено в качестве ответа Naomi N 22 апреля 2013 г. 16:12
    • Помечено в качестве ответа Иван Лукашов 22 апреля 2013 г. 16:48
    22 апреля 2013 г. 13:40

Все ответы

  • Вот, примерно так:

    using System;
    using System.Collections.Generic;
    using System.Data.OleDb;
    
    class Programm1
    {
    	static void Main()
    	{
    		String connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db\test.mdb";
    		OleDbConnection con = new OleDbConnection(connectionString);
    		List<String> emails = new List<String>();
    		using(con)
    		{
    			con.Open();
    			OleDbCommand cmd = new OleDbCommand("SELECT email FROM emails", con);
    			OleDbDataReader reader = cmd.ExecuteReader();
    			while(reader.Read())
    			{
    				emails.Add(reader.GetString(0));
    			}
    		}
    		
    		foreach(String email in emails)
    			Console.WriteLine(email);
    	}
    }

    • Предложено в качестве ответа Naomi N 22 апреля 2013 г. 16:12
    • Помечено в качестве ответа Иван Лукашов 22 апреля 2013 г. 16:48
    22 апреля 2013 г. 13:40
  • Вот, примерно так:

    using System;
    using System.Collections.Generic;
    using System.Data.OleDb;
    
    class Programm1
    {
    	static void Main()
    	{
    		String connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db\test.mdb";
    		OleDbConnection con = new OleDbConnection(connectionString);
    		List<String> emails = new List<String>();
    		using(con)
    		{
    			con.Open();
    			OleDbCommand cmd = new OleDbCommand("SELECT email FROM emails", con);
    			OleDbDataReader reader = cmd.ExecuteReader();
    			while(reader.Read())
    			{
    				emails.Add(reader.GetString(0));
    			}
    		}
    		
    		foreach(String email in emails)
    			Console.WriteLine(email);
    	}
    }

     В массив записалось два электронных адреса все правильно:  

    А вот отображается один электронных адрес:

    как сделать что бы отображалось все записи из массива?

    22 апреля 2013 г. 15:22
  • Все правильно.

    В строке:

    foreach(String email in emails)

    emails - это весь массив (а точнее список) элементов. В Вашем случае там 2 элемента - email адреса.

    email - это один элемент из массива. В данном случае это один email адрес.

    foreach - на каждой итерации берет следующий элемент из emails и присваивает его переменной email. Соответственно внутри блока цикла эта переменная каждый раз хранит только один email адрес.

    ps. Насколько я знаю, ни один из конструкторов класса MailMessage не принимает массивы адресов... Нужно ли туда передавать массив?

    22 апреля 2013 г. 15:53
  • Все правильно.

    В строке:

    foreach(String email in emails)

    emails - это весь массив (а точнее список) элементов. В Вашем случае там 2 элемента - email адреса.

    email - это один элемент из массива. В данном случае это один email адрес.

    foreach - на каждой итерации берет следующий элемент из emails и присваивает его переменной email. Соответственно внутри блока цикла эта переменная каждый раз хранит только один email адрес.

    ps. Насколько я знаю, ни один из конструкторов класса MailMessage не принимает массивы адресов... Нужно ли туда передавать массив?

    Спасибо все работает! Да "email" перехватывает из emails, обрабатывает, а потом подхватывает остальные адреса. Если я правильно в с помнил с Вашей помощью! 

         



    22 апреля 2013 г. 16:48