Как подключиться к MySQL с помощью C # Winforms и XAMPP

XAMPP — это бесплатный пакет стека решений кроссплатформенного веб-сервера с открытым исходным кодом, разработанный Apache Friends, состоящий в основном из HTTP-сервера Apache, базы данных MariaDB и интерпретаторов для сценариев, написанных на языках программирования PHP и Perl.

Если вы используете xampp, вы, вероятно, знаете, как легко создавать и поддерживать базы данных с помощью встроенного модуля phpmyadmin. Вы можете легко работать с PHP, но, если у вас есть знания .NET, вы можете начать работать и с ним.

MySQL предлагает соединителю простой соединитель, который позволит вам выполнять запросы к phpmyadmin из вашей winform.

В этой статье мы узнаем, как легко получить доступ к базе данных, созданной в phpmyadmin, используя winforms в C #.

Требования

  • Visual Studio (любая версия).
  • Расширение MySQL .NET Connector.
  • Распространение XAMPP (мы предполагаем, что вы знаете, как использовать mysql и xampp).

Реализация

Эта задача проще, чем вы думаете, для успешной реализации выполните следующие шаги:

  • Добавьте ссылку на коннектор MySQL в ваш проект winform.
  • Создайте свою базу данных (игнорируйте, если она у вас есть) в MySQL с помощью PHPMyAdmin.
  • Начните выполнять запросы.

Добавьте ссылку на коннектор MySQL в проект

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

Установите в вашей системе расширение MySQL коннектора

Вы можете выбрать полную или обычную установку.

Монтаж

После установки мы продолжим создавать пустой проект Winforms в Visual Studio, как вы обычно это делаете.

Теперь нам нужно добавить ссылку на соединитель mysql в нашем проекте. Найдите обозреватель решений в правом верхнем углу Visual Studio, когда ваш проект открыт, используйте правую кнопку мыши на Рекомендации а затем выберите Добавить ссылку из контекстного меню.

Ссылки .net C #

В показанном меню перейдите к расширениям и установите флажок в списке MySql.Data (MySql.Data.dll), а затем нажмите кнопку ОК.

MySQL data .net C # ссылка

Теперь мы сможем подключиться для выполнения запросов к MySQL с помощью C #.

Создание тестовой базы данных в phpmyadmin (localhost)

Как упоминалось ранее, мы предполагаем, что у вас уже установлен Xampp в вашей системе, и вы знаете, как его использовать.

Во-первых, не забудьте включить службы apache и mysql на панели xampp (что рекомендуется в режиме администратора).

Меню Xampp

Теперь перейдите в вашем браузере, чтобы HTTP: // локальный / PHPMyAdmin и перейдите в область баз данных.

Создайте базу данных (в этом примере наша база данных будет тестовое задание) и создайте таблицу с именем user,

PHPMyAdmin mySql table

Заметка

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

Теперь, когда наша база данных «test» содержит хотя бы одну таблицу «user», мы можем начать выполнять запросы.

Использование C # для подключения и выполнения запросов

Теперь самое интересное! мы напишем некоторый код для взаимодействия с базой данных MySQL. Прежде всего, не забудьте добавить оператор using для ссылки в вашем классе:

using MySql.Data.MySqlClient;

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

// Change the username, password and database according to your needs
// You can ignore the database option if you want to access all of them.
// 127.0.0.1 stands for localhost and the default port to connect.
string connectionString = "datasource=127.0.0.1;port=3306;username=root;password=;database=test;";
// Your query,
string query = "SELECT * FROM user";
// Prepare the connection
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection);
commandDatabase.CommandTimeout = 60;
MySqlDataReader reader;
// Let's do it !
try
{
// Open the database
databaseConnection.Open();
// Execute the query
reader = commandDatabase.ExecuteReader();
// All succesfully executed, now do something
// IMPORTANT :
// If your query returns result, use the following processor :
if (reader.HasRows)
{
while (reader.Read())
{
// As our database, the array will contain : ID 0, FIRST_NAME 1,LAST_NAME 2, ADDRESS 3
// Do something with every received database ROW
string[] row = { reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3) };
}
}
else
{
Console.WriteLine("No rows found.");
}
// Finally close the connection
databaseConnection.Close();
}
catch (Exception ex)
{
// Show any error message.
MessageBox.Show(ex.Message);
}

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

Основные примеры запросов

В этих примерах мы собираемся выполнить самые основные задачи для выполнения (CRUD):

Вставка формы

Обратите внимание, что мы будем использовать простой компонент listView (с 4 столбцами: id, имя, фамилия и адрес), 3 textBox и 2 кнопки.

Создайте

В следующем фрагменте мы создадим регистр в тестовой базе данных:

private void SaveUser()
{
string connectionString = "datasource=127.0.0.1;port=3306;username=root;password=;database=test;";
string query = "INSERT INTO user(`id`, `first_name`, `last_name`, `address`) VALUES (NULL, '"+textBox1.Text+ "', '" + textBox2.Text + "', '" + textBox3.Text + "')";
// Which could be translated manually to :
// INSERT INTO user(`id`, `first_name`, `last_name`, `address`) VALUES (NULL, 'Bruce', 'Wayne', 'Wayne Manor')
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection);
commandDatabase.CommandTimeout = 60;
try
{
databaseConnection.Open();
MySqlDataReader myReader = commandDatabase.ExecuteReader();
MessageBox.Show("User succesfully registered");
databaseConnection.Close();
}
catch (Exception ex)
{
// Show any error message.
MessageBox.Show(ex.Message);
}
}

Шоу

В следующем фрагменте мы перечислим всех пользователей в тестовой базе данных в виде списка (если доступно или покажем в консоли):

private void listUsers()
{
string connectionString = "datasource=127.0.0.1;port=3306;username=root;password=;database=test;";
// Select all
string query = "SELECT * FROM user";
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection);
commandDatabase.CommandTimeout = 60;
MySqlDataReader reader;
try
{
databaseConnection.Open();
reader = commandDatabase.ExecuteReader();
// Success, now list
// If there are available rows
if (reader.HasRows)
{
while (reader.Read())
{
ID                              First name                  Last Name                    Address
Console.WriteLine(reader.GetString(0) + " - " + reader.GetString(1) + " - " + reader.GetString(2) + " - " + reader.GetString(3));
// Example to save in the listView1 :
//string[] row = { reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3) };
//var listViewItem = new ListViewItem(row);
//listView1.Items.Add(listViewItem);
}
}
else
{
Console.WriteLine("No rows found.");
}
databaseConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Обновить

Обновите поля строки с идентификатором:

private void updateUser()
{
string connectionString = "datasource=127.0.0.1;port=3306;username=root;password=;database=test;";
// Update the properties of the row with ID 1
string query = "UPDATE `user` SET `first_name`='Willy',`last_name`='Wonka',`address`='Chocolate factory' WHERE id = 1";
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection);
commandDatabase.CommandTimeout = 60;
MySqlDataReader reader;
try
{
databaseConnection.Open();
reader = commandDatabase.ExecuteReader();
// Succesfully updated
databaseConnection.Close();
}
catch (Exception ex)
{
// Ops, maybe the id doesn't exists ?
MessageBox.Show(ex.Message);
}
}

удалять

Удалить строку с идентификатором (x):

private void deleteUser()
{
string connectionString = "datasource=127.0.0.1;port=3306;username=root;password=;database=test;";
// Delete the item with ID 1
string query = "DELETE FROM `user` WHERE id = 1";
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection);
commandDatabase.CommandTimeout = 60;
MySqlDataReader reader;
try
{
databaseConnection.Open();
reader = commandDatabase.ExecuteReader();
// Succesfully deleted
databaseConnection.Close();
}
catch (Exception ex)
{
// Ops, maybe the id doesn't exists ?
MessageBox.Show(ex.Message);
}
}

Повеселись !

Ссылка на основную публикацию
Adblock
detector