Внимание конкурс! на форуме codeby

Наш конкурс  - это возможность получить денежные призы, премиум доступ на форуме и скидку в нашем маркетплейсе

Mysql метод ExecuteReader

В этой статье хочу показать на простом примере, как можно получить данные из базы данных Mysql с помощью метода ExecuteReader.

И так предположим, что у нас есть база данных notebook, которая содержит всего одну таблицу Friends. Данная таблица состоит из трёх столбов: id, name, age и уже содержит несколько записей.

таблица

В качестве задачи рассмотрим, как с помощью метода ExecuteReader получить все значения из колонки name в таблице Friends и вывести полученный результат в элемент управления TextBox.

Подготовка

1. Создадим новый проект типа Windows Forms Application

2. Добавим на форму: кнопку и текстовое поле (textbox).

форма

3. Для поля textBox установим свойство Multiline в значение true.

свойства

4. Для работы с базой данных Mysql потребуется установить MySQL Connector.

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

6. Добавим в тело метода следующий код:

7. На форме выберите кнопку и подпишитесь на событие Click. В обработчике события Button_Click поместите код для вызова метода GetAllNames и вывода данных в текстовое поле:

результат

список имён

В принципе значение Multiline можно не менять, тогда вместо метода AppendLine используйте метод Append (sb.Append).

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

Работа метода ExecuteReader

За получение данных из базы данных Mysql отвечает следующая часть кода:

В первой строке кода с помощью метода ExecuteReader создаётся новый объект типа MySqlDataReader и происходит отправка запроса к базе данных Mysql.

Обычно результат запроса возвращается в объект MySqlDataReader. В данном примере в качестве результата запроса мы получаем таблицу, состоящую из одного колонки Name.

колонка

Так как мы создали новый объект на основе метода ExecuteReader, то в результате мы получили возможность только читать данные из полученной таблицы результатов.



Обратите внимание на то, что чтение строк выполняется только при установленном соединении с базой данных Mysql и только в прямом направлении (то есть по порядку сверху вниз) это значит, что произвольно перемещаться по таблице вы не можете.

Как происходит чтение данных?

Объект MySqlDataReader содержит метод Read, который позволяет нам управлять курсором, который в свою очередь позволяет перемещаться по таблице результатов (сверху вниз).

По умолчанию курсор установлен перед самой первой записью в таблице.

курсор

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

выбранная запись

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

В обоих случаях мы получим одинаковый результат.

Для увеличения производительности операции связанные с чтением рекомендуется использоваться специальные типизированные методы, например такие как: GetInt16, GetInt32, GetString и другие, например:

Так же в данный момент Вы можете использовать свойство FieldCount, которое позволяет определить количество полей в выбранной строке, например:

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

Если мы изменим sql запрос:

Результат: 3

Но, не стоит забывать, что при обращении к колонке нужно указать её индекс. Для первой колонки он всегда равен нулю, а для последней будет равен (общее количество столбцов — 1).

После получения последней записи процесс чтения данных завершается. Теперь Вы должны закрыть объект MySqlDataReader с помощью метода Close, например:

Но, так как MySqlDataReader реализует интерфейс IDisposable и у него есть метод Dispose, то мы можем использовать using для того, чтобы автоматически закрыть объект чтения и затем удалить его, как например, в нашем основном примере.

Все полученные данные из таблицы мы помещаем в объект типа StringBuilder — это позволяет экономично работать с память при работе со строками.

На этом процесс чтения и получения данных завершён. Если есть вопросы, то оставляйте их в комментариях.

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


Спонсор публикаций HOSTLAND.RU

Hostland.RU уже более 10 лет является профессионалом в сфере предоставления виртуального хостинга и целого ряда сопутствующих услуг. Мы отвечаем за качество нашей работы.

Похожие темы

Как получить отдельную таблицу MySQL из массивного... Представьте следующую ситуацию: кто-то сделал бэкап всей базы данных MySQL — очень большой бэкап — обычными инструментами. Результатом э...
Как просто получить данные из DataTable... Как получить данные из DataTable в c# В одной из предыдущих статей был показан пример работы с базой данных Mysql и c#. После этого многие стали обра...
SQL инъекции — промежуточный уровень... Источник https://www.kalitutorials.net/2015/02/sql-injection-intermediate-level.html Это теоретический пост, посвящённый разновидностям атак тип...
Как настроить MariaDB SSL и установить безопасные ... Я собираюсь установить MariaDB SSL (Secure Sockets Layer) а также безопасные соединения от клиента MySQL и приложения PHP. Как включить SSL для сервер...
Обновление сервера Apache и его компонентов... Вот здесь я рассказывал, как установить локальный сервер Apache. Со временем выходят новые версии программ, и возникает необходимость обновления. Проц...