Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


Как добавить новую запись в базу данных Mysql?

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

Подготовка

И так для начала создадим Windows Forms приложение, затем добавим на форму две кнопки, с помощью первой мы будем добавлять новые записи в базу данных Mysql, а с помощью второй получать их. Так же добавим на форму элемент управления DataGridView, в который будет выводить полученные данные.

1

Каркас приложения создан, и теперь можно переходить к основной теме статьи. И так предположим, что у нас есть база данных «test», которая имеет всего одну таблицу «friends», которая состоит из четырёх колонок: id, name, lastname, age. В качестве задачи нам нужно добавить в эту таблицу одну или несколько записей из клиентского приложения, написанного на языке c#

структура таблицы

Для того чтобы мы смогли подключиться и начать работать с базой данных Mysql, нам необходимо установить и добавить в проект MySQL Connector.

Затем создадим метод insertData, с помощью которого мы будет добавлять новые записи в базу данных Mysql.

private void insertData()
{
}

На этом подготовительная часть заканчивается, переходим к написанию кода.

Добавление новой записи

Чтобы Вы лучше поняли весь процесс работы, сначала выполним все действия от начала и до конца по шагам, а в конце статьи я добавлю весь исходник целиком. И так начнём.

Шаг 1. Создаём строку подключения к базе данных Mysql. В качестве параметров указываем: имя или сетевой адрес Mysql сервера, имя пользователя базы данных Mysql, название базы данных и пароль.

string conStr = "server=127.0.0.1;user=root;" +
"database=test;password=123;";

Шаг 2. Используя оператора INSERT INTO, создаём строку запроса, которая позволяет добавить новую запись в таблицу. Обратите внимание, так как колонка id имеет атрибут AUTO_INCREMENT, то в запросе мы её не указываем, так как нужные значения будет подставлены автоматически.

string sql = "INSERT INTO friends (name, lastname, age)" +
"VALUES ('Misha', 'Ivanov', 26)";

Но, чаще всего вместо пустого значения в sql запросе передают значение NULL.

string sql = "INSERT INTO friends (id, name, lastname, age)" +
"VALUES (null, 'Misha', 'Ivanov', 26)";

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


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


Шаг 3. Создаем команду, которая используется для отправки sql запроса на сервер, в качестве параметров передаем: строку запроса и строку подключения.

MySqlCommand cmd = new MySqlCommand(sql, con);

Шаг 4. Открываем соединение с базой данных Mysql.

con.Open();

Шаг 5. С помощью метода ExecuteNonQuery выполняем команду и добавляем запись в таблицу.

cmd.ExecuteNonQuery();

Данный метод ничего не возвращает, поэтому если Вам необходимо убедиться в том, что запись действительно была добавлена, Вы можете воспользоваться, например функцией Last Insert ID и в качестве результата получить id последней добавленной записи.

string queryString = "INSERT INTO имя таблицы (столбцы)" +
"VALUES (значения);" +
"SELECT LAST_INSERT_ID();";
int lastID = Convert.ToInt32(cmd.ExecuteScalar());

Полный листинг

private void insertData()
{
string conStr = "server=127.0.0.1;user=root;" +
"database=test;password=123;";
using (MySqlConnection con = new MySqlConnection(conStr))
{
try
{
string sql = "INSERT INTO friends (name, lastname, age)" +
"VALUES ('Misha', 'Ivanov', 26)";
MySqlCommand cmd = new MySqlCommand(sql, con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Данные добавлены!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

Вызов метода

private void button1_Click(object sender, EventArgs e)
{
insertData();
}

Результат:

добавленная запись

Осталось получить данные из базы данных Mysql и вывести их в окно DataGridView.

данные из таблицы

Добавление новой записи с помощью параметризованного запроса

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

private void insertData()
{
string conStr = "server=127.0.0.1;user=root;" +
"database=test;password=123;";
using (MySqlConnection con = new MySqlConnection(conStr))
{
try
{
string sql = "INSERT INTO friends (name, lastname, age)" +
"VALUES (@Name, @LastName, @Age);";
con.Open();
MySqlCommand cmd = new MySqlCommand(sql, con);
//создаем параметры и добавляем их в коллекцию
cmd.Parameters.AddWithValue("@Name", "Vasya");
cmd.Parameters.AddWithValue("@LastName", "Pupkin");
cmd.Parameters.AddWithValue("@Age", 18);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

Вот собственно и всё, если есть какие-то вопросы, то оставляйте их в комментариях.

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


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices