C# ,mysql ,how to select and read all data from one table?
I want to select and show( let’s say in Debug console) all data from one table which is in MySQL database.
I can read data using column names or indexes, but only in one fetched row. Can somebody tell me how to loop trough rows? So I can read it’s data..
Thank you for any help.
6 Answers 6
The FieldCount() returns the number of columns in the table. I think your table has only 1 column, which is why it is not iterating through the rest of the records.
I suggest you remove the usage of the count variable and just go with the boolean returned from the Read() method.
You can access database records sequentially by using DataReader
Or you can use DataAdapter to fill local DataSet or DataTable and loop your rows from there:
Also always remember to make sure that you close all active connections to your database.
Работа с SqlDataAdapter и DataSet
Ранее для получения данных мы использовали объект SqlDataReader, с помощью которого построчно можно перебрать ответ от сервера базы данных. Но есть и другой способ, который демонстрирует использование объектов SqlDataAdapter и DataSet. DataSet представляет хранилище данных, с которыми можно работать независимо от наличия подключения, а SqlDataAdapter заполняет DataSet данными из БД.
Для получения данных через объект SqlDataAdapter необходимо организовать подключение к БД и выполнить команду SELECT. Есть несколько способов создания SqlDataAdapter:
Можно использовать конструктор без параметров, а команду SELECT и подключение установить позже
Можно передать в конструктор объект SqlCommand
Можно в конструкторе установить sql-выражение SELECT и объект SqlConnection
Можно в конструкторе установить sql-выражение SELECT и строку подключения
Рассмотрим, как получить данные в DataSet через SqlDataAdapter. Для работы с DataSet особенно удобно использовать элементы управления, которые могут заполняться из внешнего источника данных, например, DataGridView в Windows Forms. Поэтому создадим новый проект по типу Windows Forms Application.
Добавим на единственную форму в проекте элемент DataGridView и определим следующий код формы:
В конструкторе формы в DataGridView загружаются данные. Для загрузки данных создается объект SqlDataAdapter, который принимает объект подключения и sql-выражение SELECT. Затем создается объект DataSet и с помощью метода adapter.Fill() в него загружаются данные. Дальше происходит установка источника данных для DataGridView:
В качестве источника устанавливается одна из таблиц в DataSet. Каждая таблица представляет объект DataTable, и в DataSet может быть определено несколько таких таблиц. Но в данном случае при выборке в DataSet есть только одна таблица, которую мы можем получить из коллекции Tables по индексу.
C mysqldataadapter как получить строку запроса
Ранее для получения данных мы использовали объект SqlDataReader, с помощью которого построчно можно перебрать ответ от сервера базы данных. Но есть и другой способ, который демонстрирует использование объектов SqlDataAdapter и DataSet. DataSet представляет хранилище данных, с которыми можно работать независимо от наличия подключения, а SqlDataAdapter заполняет DataSet данными из БД.
Для получения данных через объект SqlDataAdapter необходимо организовать подключение к БД и выполнить команду SELECT. Есть несколько способов создания SqlDataAdapter:
Можно использовать конструктор без параметров, а команду SELECT и подключение установить позже
Можно передать в конструктор объект SqlCommand
Можно в конструкторе установить sql-выражение SELECT и объект SqlConnection
Можно в конструкторе установить sql-выражение SELECT и строку подключения
Рассмотрим, как получить данные в DataSet через SqlDataAdapter. Для работы с DataSet особенно удобно использовать элементы управления, которые могут заполняться из внешнего источника данных, например, DataGridView в Windows Forms. Поэтому создадим новый проект по типу Windows Forms Application.
Добавим на единственную форму в проекте элемент DataGridView и определим следующий код формы:
В конструкторе формы в DataGridView загружаются данные. Для загрузки данных создается объект SqlDataAdapter, который принимает объект подключения и sql-выражение SELECT. Затем создается объект DataSet и с помощью метода adapter.Fill() в него загружаются данные. Дальше происходит установка источника данных для DataGridView:
В качестве источника устанавливается одна из таблиц в DataSet. Каждая таблица представляет объект DataTable, и в DataSet может быть определено несколько таких таблиц. Но в данном случае при выборке в DataSet есть только одна таблица, которую мы можем получить из коллекции Tables по индексу.
C mysqldataadapter как получить строку запроса
MySqlDataAdapter is used in conjunction with MySqlConnection and MySqlCommand to increase performance when connecting to MySQL.
Note: This class is not available in .NET Standard 1.3 compatible assembly. It is available only in the assembly for full .NET Framework and .NET Standard 2.0 compatible assembly.
Example
| C# csharp | Copy Code |
|---|
| C# Visual Basic | Copy Code |
|---|
Requirements
Platforms:Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, Windows Vista, Windows Server 2008 family, Windows 7, Windows 8, Windows 10, Windows Server 2012 family.
Вытащить одну строку
Как вытащить данные из нескольких строк в таблице в одну переменную?
Например, у нас в таблице есть столбец что хранить простые числа, таких записей несколько, как.
Программа по выводу каждого слова в одну строку не работает, все выводит в одну строкк
Подскажите как доработать, только не надо пожалуйста писать код заново подскажите пожалуйста как.
Найти, вытащить текст, сцепить в одну строчку
Имеется множество пронумерованных столбцов. При вводе общего номера, необходимо вытащить текстовую.
Вывод текста в окно, перенос на следующую строку, скроллинг окна на одну строку
Есть код include ’emu8086.inc’ data segment HEIGHT dw 1 WIDTH dw 1 .
wm_leviathan, нет. т.е. вот зарегистрировался пользователь. у него есть логин, по нему делаю селект, и если в базе пробовать посмотреть, что выдает данный запрос с определенным логином. Но в программе так не получается, выбираются все , которые есть айдишки пользователя в таблице.
Добавлено через 1 минуту
Когда дебажу, то вот эта строка
Сообщение от elenkarm
wm_leviathan, я ввожу разные логины, логины уникальны, просто выдает все айдишки, несмотря какой логин получили
Добавлено через 3 минуты
т.е. 1 иван
2 петр
3 Сеня
беру логин , например. Петр. А мне выдет этой строкой
wm_leviathan, просто так называется уже столбец в таблице, а это логин
Добавлено через 32 секунды
есть user_id, то то нужно получить по полученному login_id
Добавлено через 38 секунд
то с именами было для примера
wm_leviathan, вот таким образом берется просто первая айдишка пользователя, которая есть в таблице, а не в зависимости от логина
Добавлено через 4 минуты
а еще у меня используется класс
users u = new users();
и потом просетить пытаюсь
wm_leviathan, Спасибо, все работает!
Добавлено через 19 часов 7 минут
wm_leviathan, подскажите еще , пожалуйста, как вот этот параметр( userId) передавать дальше на следующие формы? у меня получается на следующую передать только, а на ту которая идет дальше нет
Добавлено через 3 часа 23 минуты
wm_leviathan, с тем вопросом разобралась. Вот еще такой вопрос. Есть справочник из дисциплин и тем дисциплин. Мне вот нужно вбирать тему (theme_Id) и дальше подставлять в тест. Вот реализовала иерархию справочника
C# Работа с MySql. Подключение, запросы

Сегодня мы поговорим о MySql. СУБД, которую поддерживает почти любой хостер. А конкретно о том, как подключиться к подобной базе данных и работать с ней.
Для начала нужно скачать официальный коннектор для работы с базами данных MySql на платформе .NET. Для этого переходим по этой ссылке.

Начинаем установку. Тут, в принципе, всё просто. Подводные камни (а также всякие панельки-браузеры) отсутствуют. В составе библиотеки для C#, VBasic, документация и прочее.

Теперь, когда всё установлено, нам нужно подключить библиотеку к проекту. По умолчанию при установки библиотеки распаковываются в «C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5». Добавляем в References «MySql.Data.dll».
После чего можно объявить:
Теперь самое главное — подключение к базе данных:
Вся информация (адрес для доступа к СУБД, имя пользователя, пароль, порт) есть у хостера. Эту информацию можно найти в личном кабинете, или запросить к ней доступ у техподдержки.
Многие хостеры требуют дополнительной защиты по IP. То есть нужно в настройках вашего аккаунта добавить свой IP в список «безопасных» адресов. Иначе ничего не получится.
В любом случае я крайне не рекомендую использовать код, представленный выше, в клиентских приложениях (то есть в виде программ-«.exe»), которые будут распространяться в интернете/продаваться. Дело в том, что с помощью дизасемблера можно вытащить подобную информацию из приложения. А это значит, что злоумышленник сможет получить доступ к вашей базе данных.
Выходов из ситуации много. Из первого, что пришло в голову:
1) Можно для каждого клиента выделять в СУБД отдельную базу данных и отдельного пользователя. Если даже злоумышленник получит информацию для доступа — он сможет получить данные только касающиеся его аккаунта. Из минусов данного пункта: неудобно, сложно, отдельные манипуляции для каждого нового пользователя.
2) На мой взгляд верный способ — написать на PHP/ASP.Net скрипт-прослойку, которая будет принимать запросы и выдавать данные обратно, например в том же формате JSON. В данном случае всё, что сможет получить злоумышленник — это адрес скрипта и понять структуру запрашиваемых данных. Напрямую программа с СУБД уже не взаимодействует. Но есть угроза того, что зная как запрашивать данные и зная адрес скрипта — злоумышленник получит доступ к чужой информации. Для защиты от этого можно проверять логин-пароль при запросе в скрипте для конкретного пользователя.
Кстати говоря — код выше только делает запросы, но не получает результаты. Для получения данных — нужно использовать следующий код: