Back-End

4 dez, 2017

C# – Manutenção de dados com DataGridView no MySQL – Parte 01

Publicidade

Hoje vou apresentar uma aplicação C# usando ADO .NET que realiza a manutenção dos dados dos alunos em um banco de dados MySQL.

Neste artigo eu apresento uma aplicação bem simples que usa a linguagem C# e os recursos da ADO .NET para acessar um banco de dados e gerenciar as informações dos dados dos Alunos.

Para isso, a aplicação acessa o banco Cadastro e a tabela alunos, cuja estrutura vemos abaixo:

O Script SQL para criar a tabela é o seguinte:

CREATE TABLE `alunos` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nome` varchar(80) NOT NULL,
  `email` varchar(150) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
SELECT * FROM cadastro.alunos;

Como a aplicação é muito simples, vou usar uma abordagem onde criaremos uma classe contendo os métodos para acessar os dados no MySQL.

Recursos Usados:

Criando o projeto no VS 2017 Community

  • Abra o Visual Studio Community 2017 e clique em New Project;
  • Selecione Visual C#, o template Windows Classic Desktope e a seguir, Windows Forms App(.NET Framework);
  • Informe o nome CRUD_Mysql e clique no botão OK;

Agora vamos incluir uma referência a biblioteca MySql.Data neste projeto para podermos acessar o MySQL.

  • No menu Tools, clique em Nuget Package Manager -> Manage Nuget Packages for Solution;
  • Selecione o item MySql.Data, marque o projeto CRUD_MySql e clique no botão Install:

A seguir, temos o código usado no projeto:

Criando a classe com os métodos de acesso aos dados

No menu Project, clique Add Class, informe o nome Database.cs e inclua o código abaixo, nesta classe:

using MySql.Data.MySqlClient;
using System.Data;
using System.Windows.Forms;
namespace CRUD_MySql
{
    public class Database
    {
        public static string MySqlClientString = "server= localhost;user id=root;password=senha_do_banco;
database=cadastro";
        
        public static void ConexaoBD()
        {
            MySqlConnection conn = new MySqlConnection(MySqlClientString);
            try
            {
                if (conn.State.Equals(ConnectionState.Closed))
                {
                    conn.Open();
                }
            }
            catch (MySqlException erro)
            {
                MessageBox.Show("Não foi possível conectar com o banco de dados : " + erro.Message, "Erro de Conexão", 
MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning);
            }
            finally
            {
                conn.Dispose();
            }
        }
        public class Manutencao
        {
            public MySqlConnection conn = new MySqlConnection(MySqlClientString);
            public MySqlCommand cmd = new MySqlCommand();
            public DataTable dt = new DataTable();
            public MySqlDataAdapter da = new MySqlDataAdapter();
            public DataSet ds = new DataSet();
            //Executa a instrução para inserir/deletar e atualizar
            public void ExecutaConsulta(string MySql)
            {
                try
                {
                    conn.Open();
                    cmd.Connection = conn;
                    cmd.CommandText = MySql;
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
                catch
                {
                    throw;
                }
            }
            //Obtem os registros da tabela
            public DataTable GetRegistros(string MySql)
            {
                try
                {
                    dt = new DataTable();
                    da = new MySqlDataAdapter(MySql, conn);
                    da.Fill(dt);
                    return dt;
                }
                catch
                {
                    throw;
                }
            }
        }
    }
}

No arquivo DataBase.cs definimos duas classes:

  1. A classe DataBase – Contém o método ConexaoBD que realiza a conexão com o banco de dados MySql;
  2. A classe Manutenção – Contém o método ExecutaConsulta() que realiza que inclui, altera e exclui dados da tabela alunos, e, o método GeRegistros() que retorna os dados da tabela alunos;

Uma abordagem mais robusta seria criar um novo projeto do tipo Class Library e definir neste projeto a camada de acesso dados.

Definindo a interface com o usuário no formulário MainForm

Nossa interface será bem simples e vai ter somente um único formulário. Inclua os seguintes controles no formulário Form1.cs:

  • 3 Buttons
  • 3 Labels
  • 3 TextBox
  • 1 DataGridView

Disponha os controles conforme o layout da figura abaixo:

Na próxima parte do artigo vamos implementar o código do formulário para acessar e realizar a manutenção de dados acessando o MySQL.