Как просто получить данные из DataTable

Как получить данные из DataTable в c#

В одной из предыдущих статей был показан пример работы с базой данных Mysql и c#. После этого многие стали обращаться с вопросами и вот один из них: «как вывести полученные данные не в dataGridView, а например, в какую-то переменную?».

Метод GetComments возвращает тип DataTable.

DataTable

Это таблица, которая состоит из строк (Rows) и столбцов (Columns). К любой строке или колонке можно обратиться по индексу и получить нужные значения.

Несколько примеров:

private void button1_Click(object sender, EventArgs e)
{
DataTable dt =  GetComments();
//результат: comment_author
string columnName = dt.Columns[0].Caption;
//результат: root
string commentAuthor = dt.Rows[0].Field<string>("comment_author");
//результат: 20.01.2014 13:05:00
DateTime commentDate = dt.Rows[0].Field<DateTime>("comment_date");
}

Как видно ничего сложного, если есть ещё вопросы, оставляйте их в комментариях.

Читайте также:

Tags: ×

14 комментариев

  1. Oksana says:

    здравствуйте, никак не могу добавить запись в таблицу Mysql из программы на c#, ошибок не выдает, но и данные не добавляет.

    Вот код:

    <div class="spoiler-wrap">
    <div class="spoiler_head folded">развернуть</div>
    <div class="spoiler-body">
    string CommandText  = @"INSERT INTO d_order_from_menu (d_dish_dish_id, amount_dish, sum)
    VALUES(1, 5, 5)";
    string CommandText1 = @"INSERT INTO d_order (order_date, order_№_table, order_sum, d_staff_staff_id)
    VALUES(now(), 5, 5, 1)";
    string Connect = "Database=diplom; Data Source=127.0.0.1; User Id=root; Password=000";
    MySqlConnection myConnection = new MySqlConnection(Connect);
    MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);
    MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);
    </div></div>

    Может кроме запроса с Insert нужно еще что-нибудь писать? подскажите пожалуйста

  2. Сначала открыть соединение с БД, а затем для каждой из команд выполнить метод ExecuteNonQuery для вставки данных.

    MySqlConnection myConnection = new MySqlConnection(Connect);
    MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);
    MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);
    myConnection.Open();
    myCommand.ExecuteNonQuery();
    myCommand1.ExecuteNonQuery();
  3. Николай says:

    HELP HELP HELP.
    Как написать запрос на рандом, чтобы выводила случайную строку из всей таблицы в dataGridView или в лейблы.

  4. SELECT имя колонки FROM имя таблицы
    ORDER BY RAND()
    LIMIT 1;
  5. Николай says:

    Спасибо!)

  6. Дмитирй says:

    Подскажите пожалуйста. Я сделал подключение к БД и поместил ее в dataGridView. Можно ли сделать так, что бы меняя значения на форме они менялись в БД?

  7. Можно. Подписываешься на событие связанное с изменением значения в dgv и внутри него отправлять запрос к БД.

  8. Дмитирй says:

    А можно как то по подробнее об этом, а то я слаб, не понимаю =(

  9. 1. Сначала создаёшь метод, который будет выполнять добавление или изменение данных в БД, например:

    private void UpdateDB(string val1, int val2 …)
    {
    //описываешь логику
    }

    2. Затем подписываешься на событие связанное с изменением строки, ячейки и т.д.

    3. Внутри данного события вызываешь метод UpdateDB, куда передаешь значения, которые были изменены в dgv.

  10. Геннадий says:

    здравствуйте
    помогите разобраться

    Ошибка 4 &#171;System.Data.DataRow&#187; не содержит определения для &#171;Field&#187; и не был найден метод расширения &#171;Field&#187;, принимающий тип &#171;System.Data.DataRow&#187; в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)

    где мне взять эту ссылку на сборку .. ее нет .

  11. В папке References должна быть строка: System.Data.DataSetExtensions, если её нет, то тогда нужно вручную добавить в проект ссылку на сборку: System.Data.DataSetExtensions.dll

  12. Михаил says:

    Здравствуйте. А если нужно выбрать в переменную типа int значение из базы типа int , то как это сделать?
    flagbaza = baz.Rows[0].Field(&#171;Flag&#187;); &#8212; выдает ошибку &#171;Необработанное исключение типа &#171;System.InvalidCastException&#187; в System.Data.DataSetExtensions.dll

    Дополнительные сведения: Заданное приведение является недопустимым.&#187;

  13. Таблица:

    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
    |id | 0 |
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
    |name(varchar) | Oleg |
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
    |age(int) | 25 |
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

    int age;
    age = dt.Rows[0].Field<int>("age"); //25

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*