Статья Работа с СУБД MySQL в C#

Рассмотрим простенькую задачку. У нас есть сайт, управление, которым осуществляется с помощью cms WordPress, а все данные хранятся в базе данных СУБД MySQL. Нужно создать клиентское приложение, которое будет подключаться к базе данных, получать все комментарии за сегодняшний день и выводить их в DataGridView.

Подготовка
Создадим Windows Forms приложение и поместим на форму два элемента управления: кнопку с надписью получить комментарии и datagridview, который будет визуально отображать полученные данные.

30308


Для работы с базой данных нам потребуется поставщик данных (data provider), он обеспечивает подключение к БД, позволяет выполнять команды и получать результаты. По сути это обычный файл (.dll), внутри которого содержаться типы, которые настроены на взаимодействие с какой-то одной конкретной СУБД: MySQL, Oracle, Microsoft SQL Server и так далее.
30309


В Microsoft ADO.NET основное количество поставщиков данных содержится в сборке Sytem.Data.dll, но в этой сборке нет поставщика данных для работы с MySQL. Поэтому его придется скачать и установить самостоятельно. Как это сделать, можно прочитать здесь.

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

И последнее, что нужно узнать, это имя таблицы, в которой хранятся все комментарии. Это можно сделать разными способами, например, зайти на официальный сайт WordPress и найти страницу «Database Description», на которой приведено полное описание архитектуры базы данных.

30310


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

phpMyAdmin
И так открываем страницу phpMyAdmin, слева видим список баз данных.

30311


Выбираем в списке базу данных нашего сайта, например mytest и нажимаем на её заголовок. На открывшейся странице мы видим список всех доступных таблиц, среди которых есть таблица wp_comments (wp это префикс таблиц, у вас он может быть другим), само же имя будет таким же.

30312


Посмотрим, что содержится в данной таблице. Для этого нажимаем на значок с именем Browse.

30313


В открывшемся окне мы видим состав таблицы, а так же какие-то ранее занесенные в неё данные, которые нам как раз и нужно будет получить.

30314


Все поля нас не интересуют, поэтому возьмем только парочку, к примеру, получим значения: автор (comment_author), дата (comment_date) и сам текст комментария (comment_content).

Переходим к написанию кода.

Исходный код
Для начала создадим метод GetComments, который будет возвращать объект DataTable. Так как по умолчанию созданный метод имеет модификатор доступа private, то его можно не указывать явно.
C#:
DataTable GetComments()
{
}
Затем настроим подключение к базе данных

1. Создадим и заполним объект MySqlConnectionStringBuilder, который будет хранить следующие значения: имя сервера, где лежит база данных, имя пользователя и пароль для подключения к БД, а так же имя базы данных.

Либо Вы можете создать конфигурационный файл и все данные подключения вынести в него, подробный пример будет приведён в следующей статье.
C#:
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "ip адрес сервера";
mysqlCSB.Database = "имя БД";
mysqlCSB.UserID = "имя пользователя";
mysqlCSB.Password = "пароль";


2. Создадим строку запроса, в ней мы выбираем все комментарии за сегодняшний день.
C#:
string queryString = @"SELECT comment_author,
comment_date,
comment_content
FROM   wp_comments
WHERE  comment_date >= CURDATE()";


3. Создадим объект DataTable, который будет возвращать наш метод и принимать datagridView.
C#:
DataTable dt = new DataTable();


4. Создадим объект подключения, используя класс MySqlConnection.
C#:
using(MySqlConnection con = new MySqlConnection())
{
}


4.1 Настроим созданный объект, передав в свойство ConnectionString наш созданный ранее объект типа MySqlConnectionStringBuilder.
C#:
con.ConnectionString = mysqlCSB.ConnectionString;


5. Открываем соединение с базой данных
C#:
con.Open();


6. Создаем объект команду, в конструктор передаем строку запроса и объект подключения
C#:
MySqlCommand com = new MySqlCommand(queryString, con);


7. Выполним метод ExecuteReader, который позволит получить объект чтения данных MySqlDataReader
C#:
using(MySqlDataReader dr = com.ExecuteReader())
{
//есть записи?
if (dr.HasRows)
{
//заполняем объект DataTable
dt.Load(dr);
}
}


Полный листинг
C#:
using MySql.Data.MySqlClient; //Добавить
private DataTable GetComments()
{
DataTable dt = new DataTable();
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "mytest";
mysqlCSB.UserID = "root";
mysqlCSB.Password = "123";
string queryString = @"SELECT comment_author,
comment_date,
comment_content
FROM   wp_comments
WHERE  comment_date >= CURDATE()";
using (MySqlConnection con = new MySqlConnection())
{
con.ConnectionString = mysqlCSB.ConnectionString;
MySqlCommand com = new MySqlCommand(queryString, con);
try
{
con.Open();
using(MySqlDataReader dr = com.ExecuteReader())
{
if (dr.HasRows)
{
dt.Load(dr);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
return dt;
}


Осталось поместить полученные данные в datagridView.
C#:
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = GetComments();
}


На этом всё, осталось протестировать наше приложение. Нажимаем на кнопку получить комментарии, и видим результат.
30315


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

Сергей Попов

Кодебай
30.12.2015
4 718
6 706
BIT
368
DAMIR NURMADIEV
14.10.2015 в 04:40
Все супер ! Спасибо вам !

СЕРГЕЙ
14.10.2015 в 20:18
Спасибо огромное!
Как сделать чтобы он вывел данные из 1 столбца 1 строки и сам их обновлял ( допустим каждые 5 сек.) ?

СЕРГЕЙ
15.10.2015 в 15:00
Я сделал все правильно, но почему то мне нечего не выводится (

ADMIN
17.10.2015 в 02:34
Изменить SQL запрос, либо получить все данные и затем уже вытащить нужные по отдельности, например: как получить данные из DataTable

Таймер разместить на форме и подписаться на событие click кнопки «Получить комментарии», либо просто сам метод GetComments поместить в обработчик события таймера

ВИТАЛИЙ
18.10.2015 в 03:08
Здраствуйте возникла проблема, собственно если в mysql запись имеет очень длинное значение (больше 160 символов), то datatable отказывается ее выводить, выдает «Не удалось включить ограничения. По меньшей мере одна строка содержит значение, нарушающее ограничения по отсутствию пустых значений, уникальности или внешним ключам», прошу помощи не знаю что делать теперь даже…

ADMIN
19.10.2015 в 03:04
Привет. «datatable отказывается ее выводить» — не понял вот эту часть, потому что Datatable только хранит данные, а куда выводите? Поподробней если можно.

ЯНИС
19.10.2015 в 18:57
Здравствуйте. Делаю так как описанно в статье. Но некак не могу подключится к mysql. Выводит «unable to connect any of the specified mysql host» Скажите пожалуйста что я делаю не так?

Вот весь код:

[код из статьи]

ADMIN
20.10.2015 в 13:23
Привет. Может быть много причин, например:

Включен firewall (на клиенте либо на сервере), поэтому не возможно подключиться к серверу с БД.
Если локальный компьютер и на нём установлен denwer, то нужно проверить, запущена ли служба (Start Denwer)
ip адрес сервера, к которому подключаетесь, указан верный или нет?
Это проблема связана именно с подключением.

ЯНИС
22.10.2015 в 06:04
Спасибо Admin за ответ. Я заметил что при например неверном подключении или неверной имени базы данных вылетает та же самоя ошибка. Только вот когда все делаю правильно как в коде высше тогда ошибка вылетает через 10 секунд… Подозреваю что скорее всего это всетаки блокируется брендмауером, антивирусом либо рутером в настройках..
Могут быть еще и другие варианты ?

ADMIN
23.10.2015 в 01:04
«Только вот когда все делаю правильно как в коде высше» — если можно, то поподробней.

Если стоит антивирус, который имеет файрвол, то можно его временно отключить и попробовать соединиться.
Если есть второй компьютер под рукой, то можно попробовать с него выполнить подключение к серверу с БД и посмотреть какой будет результат для сравнения.
Опять же посмотреть лог файл (mysql.log).
ЯНИС
24.10.2015 в 08:49
Добрый день. Делаю как описанно в статье и в видео.. На другом компьютере где нет вообще антивируса и firewallотключил,
выдает ошибку при запуске программы:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly ‘MySql.Data,
Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d’ or one
of its dependencies.

Некак не могу разобратся. Помогите пожалуйста решить проблему
могу выслать и весь проэкт.

ADMIN
25.10.2015 в 03:32
На втором компьютере нужно установить MySQL Connector

"System.IO.FileNotFoundException: Could not load file or assembly ‘MySql.Data"
FileNotFoundException — файл не найден! Короче говоря он не может найти сборку MySql.Data.

USERNAME
25.10.2015 в 18:07
День добрый, воспользовался вашим способом, он мне помог, но не подскажите мне как можно сделать экспорт из datagridview в excel? Буду очень благодарен:)

ADMIN
26.10.2015 в 21:39
Экспорт данных из DataGridView в Excel файл

ЯНИС
28.10.2015 в 12:15
Точно. Проблема была в коннекторе. Установил на втором компе, сейчас опять то же самое..: «unable to connect any of the specified mysql host» (( А у вас админ компилируется мой проэкт ?

ЯНИС
29.10.2015 в 12:25
Компилируется и работает (соединяется с бд) без проблем?

ADMIN
30.10.2015 в 07:58
Если выполнить:

ping ip адрес mysql сервера
, что показывает?

Пример

ЯНИС
30.10.2015 в 19:44
Страница с которой хочу вывести коментарии wordpress распаложенна на бесплатном хостинге [внешняя ссылка заблокирована!]
Доступ к базе данных [внешняя ссылка заблокирована!]/pma/

Сам ее IP адрес 144.*.*.* . пинг проходит успешно. Пробовал по разному ставить путь. Тоесть и IP адрес и адреса [внешняя ссылка заблокирована!]/pma/, [внешняя ссылка заблокирована!]

То же сообщение.. Только с IP адресом задержка на вывод сообщения дольше (10 скеунд)…

ADMIN
01.11.2015 в 12:20
Нужно открыть файл wp-config.php, который лежит в корневой директории сайта. А затем найти define(‘DB_HOST’, значение)
Значение — это ip адрес mysql сервера к нему и нужно подключаться. Он совпадает c тем, к которому подключаетесь?

Либо в панели управления на хостинге можно посмотреть ip адрес БД, если значение == localhost.

ЯНИС
02.11.2015 в 05:22
Так там прописанно localhost…

ЯНИС
03.11.2015 в 08:21
Вот что написанно в настройках в менеджере сайта.
«PhpMyAdmin is located at [внешняя ссылка заблокирована!].
You have access in one shot to ALL your databases, already created.»

Но эта ссылка результата не дает.. все тоже самое..

ADMIN
04.11.2015 в 00:15
phpmyadmin — это оболочка для работы с БД к ней не нужно подключаться, нужно спросить на хостинге в тех. поддержке ip адрес сервера БД.

ЯНИС
04.11.2015 в 15:03
А IP адрес хостинга и mysql не один и тотже ?

ADMIN
06.11.2015 в 00:39
Не всегда совпадает.

Вспомнил ещё один момент, который стоит проверить. Обычно хостер блокирует входящие соединения к БД. В панели управления хостингом нужно поставить галочку (разрешить удаленный доступ к БД).
Пока её нет, все соединения являются только локальными.

Так же, если я не ошибаюсь, нельзя использовать root запись при подключение.

ЯНИС
07.11.2015 в 00:58
Ок спасибо. Постараюсь связатся с администрациией.

ЯНИС
07.11.2015 в 19:30
Здравствуйте, все равно не получилось через интернет принимать данные. Могли бы вы мене помочь если я выслал бы вам весь проэкт с паролем доступа к базе данных? Проверьте на своем компе получится или нет..

ADMIN
09.11.2015 в 09:38
«не получилось через интернет принимать данные» — всё та же ошибка? Обращались в тех. поддержку хостинга, если да, то, что Вам ответили?

ЯНИС
10.11.2015 в 11:00
Ответили что ip adres базы данный это тот который я исполовал в проекте, тоесть правильный.

ADMIN
10.11.2015 в 18:07
Тогда нужно проверить, включен ли удаленный доступ для пользователя от которого выполняется подключение к БД. Потому что, по умолчанию, на сервере, обычно включен только локальный доступ и удаленно подключиться не получиться.

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

«Проверьте на своем компе получится или нет» — я не занимаюсь такой работой, для этого есть сайты по фрилансу.

ЯНИС
12.11.2015 в 13:09
Здравствуйте я не знаю, может админ хостинга неправильно меня понял.. я вот на этом хостинге [внешняя ссылка заблокирована!] какой там ip adres к mysql ? Не вот этот 144.*.*.*? либо 144.*.*.*/pma ?

ЯНИС
12.11.2015 в 13:20
Вот еще PhpMyAdmin is located at [внешняя ссылка заблокирована!]
You have access in one shot to ALL your databases, already created.

ADMIN
13.11.2015 в 16:05
В строке подключения нужно указать: ip адрес либо имя сервера. pma — это сокр. phpmyadmin его указывать не нужно. Тем более, что тех. поддержка уже Вам сказала, какой ip адрес нужно использовать.

«Вот еще PhpMyAdmin is located … » — это никак не связано с подключением.

ЯНИС
15.11.2015 в 04:57
Здравствуйте, а SSH доступ на сервере это не то что мне нужно?

ADMIN
16.11.2015 в 03:03
Привет. Полную информацию по подключению к серверу баз данных может дать только тех. поддержка хостера, а сидеть и гадать — это пустая трата времени.

ГЕННАДИЙ
17.11.2015 в 09:25
Спасибо . я совсем самоучка новичек . Очень долго искал как подключиться к бд . все версии что предлагают в интернете ,ничего не подходило может я конечно чего -то не понимал .но всегда выходили ошибки . А у вас все доходчево и с первого раза все получилось. Правда поле того как я подключился к базе появилось много вопросов . Но это уже совсем другая история ??

ГЕННАДИЙ
18.11.2015 в 18:39
Здравствуй
скажите пожалуйста.
как мне сделать что я мог выводить инфу из бд.
таким способом
например у меня в базе есть таблица в которой есть например имя фамилия текст .
как мне сделать что б я мог выводить в первом textBox только имя во втором textBox только текст . мне явно не надо писать под каждый textBox весть этот код .есть более удобный способ например как и php я подставляю только переменные
p.s извиняюсь за грам ошибки , 20 лет не в России дают о себе знать

ADMIN
20.11.2015 в 10:46
Привет! Вот пример.

Только вместо переменных указываешь textBox-ы.

ГЕННАДИЙ
20.11.2015 в 17:20
Спасибо !все получилось без проблем

ГЕННАДИЙ
22.11.2015 в 05:38
и опять же вопросик . думаю я вас скоро устану ?? так как проектов в голове много а знаний в программировании мизерные .
я уже умею блогадаря вам выводить данные из бд
и подставлять их в переменные . это дал мне большой толчек . только вот я умею это все делать
при нажатии кнопки . можно ли сделать так что бы данные из бд выводились без всяких действий . а просто при запуске программы

ADMIN
22.11.2015 в 20:16
=) Например, можно подписаться на событие Form.Load, которое есть у любой формы:

Код:
private void Form1_Load(object sender, EventArgs e)
{
GetComments(); //получаем данные из БД
}
ГЕННАДИЙ
23.11.2015 в 13:52
спасибо!!

ГЕННАДИЙ
25.11.2015 в 08:12
ну наконец-то я вас нашел . переустановил windows а ссылку забыл сохранить ..
Скажите пожалуйста . я вот тут пишу приложения XNA studio 3,0
сделал все как вы показываете . да и все получалось у меня а вот в xna ошибка не может подключить
using MySql.Data.MySqlClient;
выдает ошибку

ГЕННАДИЙ
25.11.2015 в 14:22
хотя извините задавая вам вопрос я сам же на него ответил . я не подключил пространства имен
using MySql.Data.MySqlClient;
так как его нет в списке ссылок ..
после установки
mysql-connector-net-6.9.4.msi почему-то не появляентся… раньше я это все делал в visual studio2010 а сейчас стоит 2008 может быть в этом причина ? . но в 2010 версии я не могу запустить xna studio / хотя раньше так и было .. вообщем круговая парука

ГЕННАДИЙ
27.11.2015 в 03:18
Вообщем спасибо . Я разобрался ?? .

НИКОЛАЙ
27.11.2015 в 16:59
Супер гуд! ?? Спасибо!

МИХАИЛ
29.11.2015 в 00:39
Здравствуйте. Подскажите пожалуйста с чем может быть связанна следующая проблема:
Сделал все так как показано в вашем примере,ввел в запросе свои данные , программа запускается без ошибок, НО при нажатии кнопки ничего не происходит, т.е. не появляются никакие записи с базы. Из-за чего это может быть?
Заранее спасибо!)
P.S
Запрос в таком виде:

Код:
string queryString = @"SELECT Position, Name, Flag
FROM connectives
WHERE Position = 2";


ADMIN
30.11.2015 в 10:29
1. Для начала стоит проверить, а есть ли данные в таблице connectives? Может быть она пустая?
2. Затем само условие поверить (WHERE Position=2) возможно нет соответствий, получаем пустоту.
3. Далее проверить if (dr.HasRows) если false, то соответственно ничего не получили из БД, а значит опять будет пусто в datagridview, значит опять же разбираемся с БД. И так далее.
4. Срабатывает ли событие Button.Click? Возможно не подписаны на событие или не работает обработчик события.

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

МИХАИЛ
01.12.2015 в 03:04
Спасибо, проблема была по 4 пункту. Не срабатывал обработчик действий (баттон) .

МИХАИЛ
01.12.2015 в 21:32
Подскажите еще,пожалйста. Как сделать так что б в запросе можно было использовать перемнные. Т.е. в запросе

Код:
@"SELECT Position, Name, Flag
FROM connectives
WHERE  Position= @k OR Position=@p
ORDER BY RAND()
LIMIT 1";
Мне надо в Position использовать то что хранится в переменных k и p.
При том варианте как написал я- выскакивает ошибка «fatal error encountered during command execution»

ADMIN
03.12.2015 в 01:34
Код:
int x = 10;
int y = 5;
SELECT Position, Name, Flag
FROM connectives
WHERE  Position = @k OR Position = @p
ORDER BY RAND()
LIMIT 1;
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.Parameters.AddWithValue("@k", x);
cmd.Parameters.AddWithValue("@p", y);
cmd.ExecuteNonQuery();
Пример: Удаление строки в базе данных Mysql

ГЕННАДИЙ
03.12.2015 в 14:45
здравствуйте
скажите пожалуйста , как можно посчитать сколько есть записей в таблице
ну или еще лучше . как вывести все записи из таблицы
спасибо

ADMIN
05.12.2015 в 10:48
сколько записей в таблице:

SELECT COUNT(*) FROM имя_таблицы;
все записи из таблицы:

SELECT * FROM имя_таблицы;
(изучайте SQL)

ГЕННАДИЙ
05.12.2015 в 14:19
спасибо . вы не много меня не правильна поняли .ну или я не правильно объяснил .
на счет сколько записей в таблице я так и не понял как вывести на экран .
а на счет вывести все записи . я имел ввиду . вывести все записи на экран ну например в textBox а то у меня получается что выводиться только первая запись . ну или та которую укажу в WHERE . как я понимаю нужно сделать цикл for ну или while но для этого нужно знать сколько записей в таблице .

ADMIN
07.12.2015 в 07:38
Вот пример, как можно получить количество всех записей в таблице: Mysql метод ExecuteScalar

Если же брать пример из данной статьи, то здесь if (dr.HasRows) проверяет наличие строк, если их нет, то false и можно какую-то логику описать, а если строки есть, то получить их кол-во можно так:

int value = dt.Rows.Count;
Здесь кол-во записей в DataTable (dt) будет равно количеству записей в таблице.

ГЕННАДИЙ
07.12.2015 в 15:13
Здравствуйте
скажите пожалуйста . Кто нибудь может объяснить как вывести все записи из базы на экран . ну в текстБоксе например или в лабелах .. в php это все реализуется в цикле while без всяких заморочек . как мне это сделать в C# я уже все что мог перепробовал

ADMIN
09.12.2015 в 08:30
«Все записи из базы» — это данные из всех таблиц? Вы можете поподробней задачу описать? В языке c# тоже можно использовать цикл while, например: Mysql метод ExecuteReader

ГЕННАДИЙ
09.12.2015 в 22:50
Спасибо .тема закрыта . листБокс подошел ?? . правда это наверное не решит мою проблему . ну все-же

КОНСТАНТИН
10.12.2015 в 19:26
Огромное спасибо! Все получилось сразу, даже с реальным удаленным сервером БД!

АЛЕКСЕЙ
12.12.2015 в 10:42
Здравствуйте, подскажите пожалуйста. Делаю все как описано в статье, данные из таблицы выводятся, но возникла проблема с кодировкой. Текст на русском выводится крокозябрами. что с этим можно сделать?

ADMIN
13.12.2015 в 04:31
Можно попробовать в строке подключения добавить:

"Server=localhost;Database=mydb;Uid=user;Pwd=123;Charset=utf8;"
для MySqlConnectionStringBuilder:

mysqlCSB.UserID = "имя пользователя";
mysqlCSB.Password = "пароль";
...
//добавить
mysqlCSB.CharacterSet = "utf8";
АЛЕКСЕЙ
13.12.2015 в 21:14
Это все уже перепробовал, не помогает. Есть еще какие то варианты? Изначально какая у Вас кодировка была в базе и в таблице?

АЛЕКСЕЙ
14.12.2015 в 20:34
Все, разобрался. Если указывать при создании базы и таблицы кодировку ср866, то русский текст нормально переносится на форму. Спасибо!

ADMIN
15.12.2015 в 13:15
По умолчанию рекомендуется utf8, так как она поддерживает большинство языков, но лучше установить utf8_general_ci.

LEXAN
16.12.2015 в 21:57
Здравствуйте. Тоже проблема с кодировкой. Данные в базе в кодировке «latin1», при чтении из базы кириллица нечитаема, подскажите пожалуйста, как можно производить конвертацию кодировки символов при запросе.

ADMIN
17.12.2015 в 23:10
«Данные в базе в кодировке «latin1?, при чтении из базы кириллица нечитаема». Всё правильно, потому что latin1 предназначена только для западноевропейских языков и в ней нет кириллицы. Конвертирование — это неправильный путь. Нужно кодировку для таблицы или для всей бд, например в том же phpmyadmin на utf8, utf8_general_ci или utf8_unCODE_ci.

ADMIN
18.12.2015 в 17:16
А таблица, в которой содержатся данные, точно в кодировке latin1, потому что не понятно, как туда кириллица вставилась? И ещё если открыть таблицу с данными, то там они отображаются нормально или тоже кракозябры?

ADMIN
20.12.2015 в 09:25
«в свойствах сервера везде кодировка стоит «latin1?, COLLATE «latin1_general_ci». Есть подозрения, что в таблицах с кодировкой latin1, данные в кодировке cp1251. »

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

НИКОЛАЙ
20.12.2015 в 15:42
Доброго времени, Пишу курсовую работу на c# + MySQL.
Ваш сайт помог решить проблему с подключением к БД, как и локально, так и удаленно, за что особое спасибо. Но, в процессе работы, возникло пару вопросов: как отобразить в таблице не id внешнего ключа , а само значение ячейки из другой таблицы. Получилось только «Для нужного в столбца в свойствах вместо TextBoxColumn ставишь ComboboxCombobox, в DataSource выбираешь источник(BindinSource например), в DisplayMember поле с названиями, в ValueMember — поле с id.», но тут только через непосредственное подключение базы в datagridview. Заранее спасибо.

НИКОЛАЙ
22.12.2015 в 01:19
Посидел над SQL-запросами. Нашел вот такое решение.

string queryString = @"SELECT p_id, p_fio, p_tel, city FROM phone, gorod where p_gor=g_id";
ИЛЬЯ
23.12.2015 в 23:57
Здравствуйте.
В статье говорится, что можно создать отдельный файл конфигурации для подключения к БД, и этот пример будет рассмотрен в следующей статье, но статью не нашел, можете дать ссылку, пожалуйста. И вот еще, значит ли этто, что можно будет создать простую форму в которой можно будет задать ip, login и пароль для подключения.
Заранее спасибо, с нетерпением жду ответа.

ADMIN
25.12.2015 в 06:23
создание файла конфигурации для подключения к БД

«значит ли это, что можно будет создать простую форму» — да, можно.

ОЛЬГА
25.12.2015 в 17:41
Здравствуйте!
Можно уточнить, а в чем преимущество data provider по сравнению с пространством имен System.Data.SqlClient? Это просто разные способы подключиться к базе данных?
Если моя база просто хранится в SQL server 2008, и мне нужно некоторые данные из неё с помощью C# загрузить в Word-документ, то как лучше подключиться?
Извините, если вопрос очень глупый) я только начала работать с базами в C#.

ADMIN
27.12.2015 в 07:24
1. А System.Data.SqlClient — это не data provider? data provider — это библиотека для работы с конкретной СУБД, например: System.Data.SqlClient — MSSQL, MySql.Data.MySqlClient — MySQL.

2. Подключение к MSSQL выполняется таким же образом, как и при работе с СУБД MySQL: создаётся объект Connection, выполняется метод Open.

АНТОН
27.12.2015 в 22:42
Добрый день. Подскажите пожалуйста, как записать введенные значения в dataGridView1 в БД?

ADMIN
28.12.2015 в 22:47
Как добавить новую запись в БД

ADMIN
30.12.2015 в 14:44
Как данные в базе данных MySQL

АНТОН
30.12.2015 в 12:38
Спасибо. Еще вопрос. Как мне нужные данные?

ИЛЬЯ
31.12.2015 в 13:51
И снова здравствуйте!
Моя проблема такова: я написал приложение для работы с БД на сервере, скомпилировал его в exe, и все нормально работало, на машине на которой я вел проект. Данные вносились и выводились, как положено, но при запуске на другом компьютере в базу вместо записи на русском языке вносится это «???????????». Что странно, так как при установке MySQL сервера в настройках установлена кодировка utf-8, и все остальные настройки совпадают.
Подскажите пожалуйста, в чем может быть проблема.

ADMIN
01.01.2016 в 21:26
Привет.
Здесь может быть много причин…
Например, откуда берутся данные, которые передаются в БД? (например: из файла, текстового поля или что-то другое)
Если, например это текстовый файл, то нужно проверить ещё на клиенте, нет ли проблем с кодировкой после чтения файла.
Если в строке подключения прописать кодировку? (mysqlCSB.CharacterSet = «utf8″; или database=test;Charset=utf8;»)
Опять же БД для обоих клиентов одинаковая?
Версию mysql connector обновить.

ВЛАДИМИР
02.01.2016 в 20:37
У меня нет вкладки NET как у вас на видео и тем более нет MySqlData
Что делать, где искать?

ADMIN
03.01.2016 в 22:11
Как установить Mysql Connector
Сборку можно добавить через вкладку Browse, с помощью проводника просто указав нужную сборку.

АНДРЮХА КОМП
05.01.2016 в 12:14
Спасибо ОГРОМНОЕ за данный код и уроки!!!!!!!!!!!!!!
Только одно не понравилось-все видео без звука.
Пожалуйста в следующих видео сделать озвучивание!

ИВАН
05.01.2016 в 22:32
Спасибо за статьи!
Возник насущный вопрос:
Как периодически, к примеру по таймеру (или может есть более интересные варианты?) обновлять выводимое в DataTable и соответственно в dataGridView1 ?
Заранее Спасибо!

ADMIN
06.01.2016 в 20:51
Control Timer самое простое решение.

Пример:

Код:
timer1.Interval = какой-то интервал;
timer1.Enable = true;
подписываемся на событие Tick

private void timer1_Tick(object sender, EventArgs e)
{
//выполняется обновление
dgv.DataSet = null;
dgv.DataSet = UpdateData();
}
//обновление данных
private DataTable UpdateData()
{
DataTable dt = new DataTable();
//операции связанные с получением новых данных
return dt;
}
TOXA
07.01.2016 в 15:32
Жаль, но код не заработал, хотя SQL запрос я проверил. Нажатие на кнопку ничего не дает, глухо как в танке…

ADMIN
09.01.2016 в 10:04
Исключение возникает при этом? Если да, то какой содержит текст?
Нажатие на кнопку отрабатывается? То есть, например если поставить точку остановы внутри событие Click, то функция запускается на выполнение?

ещё советы

PSH
10.01.2016 в 06:51
Могли бы показать код, как добавить обработчик на новую кнопку (button2, скажем), который, ну пускай, что-либо вносит в таблицу (INSERT INTO).
Не знаком с ооп, на костылях и собственных ошибках пытаюсь разобраться как сделать подобное). Или может подскажет что конкретное прочесть? Буду благодарен

ADMIN
10.01.2016 в 22:28
Как добавить новую запись в БД MySQL

PSH
12.01.2016 в 05:21
Спасибо огромное! Ваш труд бесценен!)

А каким образом можно привязать уже созданные вручную столбцы (в dataGridView) к извлекаемым из mysql ?

В описании класса SqlDataReader есть свойство Item (Возвращает значение указанного столбца в собственном формате), только вот VS 2012 ругается что нет такого…
Или не в ту степь залез?

ADMIN
13.01.2016 в 02:46
А каким образом можно привязать уже созданные вручную столбцы (в dataGridView) к извлекаемым из mysql ?

Зависит от выбранной модели работы: Connected, Disconnected, Entity Framework?

В описании класса SqlDataReader есть свойство Item (Возвращает значение указанного столбца в собственном формате), только вот VS 2012 ругается что нет такого…

Если СУБД MySQL, то нужно использовать MySqlDataReader

МИХАИЛ
14.01.2016 в 05:21
Все Супер, Спасибо вам

ARTEM
15.01.2016 в 00:37
Пишет данный ключ отсутствует в словаре

[код из статьи]

ADMIN
16.01.2016 в 11:58
В каком месте кода возникает Exception?

ARTEM
16.01.2016 в 21:20
Проблему решил, была неправильная кодировка БД.

ASTV
27.11.2016 в 13:05
Полезно. Спасибо!

NAILOZA
20.01.2017 в 23:12
Здравствуйте, может и мне подскажите, необходим код для кнопки, что бы вызывать готовый sql запрос.
 
  • Нравится
Реакции: N1GGA
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!