C# - Acessando MySQL com Windows Forms


Vou mostrar como acessar o MySQL usando a linguagem C# em uma aplicação Windows Forms.

Primeiro baixe a versão 5 MySQL Community Server , que é gratuito no sítio: http://dev.mysql.com/downloads/

Em seguida baixe também o conector para a plataforma .NET em : http://dev.mysql.com/downloads/connector/net/5.2.html

A instalação padrão é muito simples basta seguir as orientações do assistente. Recomendo alterar a senha do usuário root.

Agora baixe e instale o MySQL Administrator para administrar o servidor MySQL.

Vamos instalar também uma ferramenta gráfica para poder trabalhar com o MySQL para executar consultas e criar stored procedures: MySQL Query Browser

Obs: As duas últimas ferramentas são disponibilizadas em um único pacote em : http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-gui-tools-5.0-r12-win32.msi/from/pick

Haja download , mas em compensação é tudo grátis...

Após terminar a instalação de todas as ferramentas indicas você pode conferir no Windows , Menu Iniciar -> Todos Programas a relação dos programas instalados:

Agora execute o MySQL Administrator e abra o MySQL; se tudo foi realmente instalado corretamente você deverá obter o seguinte resultado:

 
 

Como padrão o MySQL apresenta um banco de dados Test. Selecionando o banco de dados vemos que não existe nenhuma tabela criada.

Para criar um novo banco de dados clique sobre a área vazia que apresenta os schemas e selecione a opção Create New Schema;

Vamos criar um banco de dados chamado Cadastro para usar como exemplo neste artigo. Digite o nome Cadastro e clique em OK para criar o banco de dados.

Agora que ja temos o banco de dados vamos clicar no botão Create Table e definir a tabela Mensagens conforme abaixo:

Clicando no botão Apply Changes será exibida o comando SQL para criação da tabela. Clique em Execute para gerar a tabela Mensagens.

Pronto ! Já criamos o banco de dados e a tabela agora vamos ao trabalho...

Criando o projeto no SharpDevelop 2.2

Vamos criar uma nova solução C# usando o SharpDevelop 2.2 (você pode usar o Visual C# Express Edition) com o nome daoMySQL através do menu Arquivo -> Novo -> Solução , selecionando o Modelo Aplicação Windows;

Neste projeto eu vou mostrar

Como você pode notar , um projeto muito simples pode nos ensinar muitas coisas...

Antes de iniciar vamos incluir duas referências no nosso projeto:

  1. MySql.Data - Para termos acesso as classes de acesso a dados do conector MySQL Connect;
  2. System.Configuration - Para podermos acessar a string de conexão do MySQL no arquivo App.Config;

Clique com o botão direito do mouse sobre o projeto e selecione Adicionar Referência;

Em seguida selecione a referência MySql.Data;

Ainda na mesma janela selecione a referência System.Configuration;

Clique no botão OK;

Vamos criar um arquivo App.Config para podermos armazenar a string de conexão.

Clique com o botão direito do mouse sobre o projeto e selecione Adicionar -> Novo Item;

Na janela Nova Arquivo , selecione Misc e App.Config e clique em Criar;

Inclua o código destacado em negrito referente a string de conexão para o MysQL do nosso exemplo onde estamos acessando o banco de dados Cadastro com o usuário root; (A senha deve ser a que você atribuiu na instalação);

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<connectionStrings>
		<!-- Example connection to a SQL Server Database on localhost. -->
		<!-- <add name="ExampleConnectionString"
			connectionString="Data Source=.;Initial Catalog=DBName;Integrated Security=True"
			providerName="System.Data.SqlClient" /> -->
	<add name="MySQLConnectionString" connectionString="Server=localhost;Database=Cadastro;Uid=root;Pwd=xxxxx;Connect Timeout=30;" />
	</connectionStrings>
	<appSettings>
		<!-- access these values via the property:
			System.Configuration.ConfigurationManager.AppSettings[key]
		-->
		<add key="Setting1" value="Very" />
		<add key="Setting2" value="Easy" />
 	</appSettings>
</configuration>

Vamos agora criar uma classe chamada daoMySQL onde iremos usar o padrão Singleton para obter uma única instância da conexão com o MySQL;

O padrão  Singleton  garante que para uma classe específica só possa existir uma única instância, a qual é acessível de forma global e uniforme

Nota: Para saber mais sobre o padrão Singleton veja o meu artigo:  O padrão Singleton

Clique com o botão direito sobre o projeto e selecione Adicionar -> Novo Item;

A seguir selecione C# e em modelo selecione Classe informando o nome daoMySQL;

A seguir digite o código abaixo para esta classe:

using System;
using MySql.Data.MySqlClient;
using System.Configuration;

namespace daoMySQL
{
	/// <summary>
	/// Classe que usa o padrão Singleton para obter 
	/// uma instãncia da conexão com o MySQL
	/// </summary>
	public class MySQLDao
	{
		private static readonly MySQLDao instanciaMySQL = new MySQLDao();
		
		private MySQLDao(){	}
		
		public static MySQLDao getInstancia()
		{
			return instanciaMySQL;
		}
		
		public MySqlConnection getConexao()
		{
			string conn = ConfigurationManager.ConnectionStrings["MySQLConnectionString"].ToString();
			return new MySqlConnection(conn);
		}
	}
}

Observe que o construtor da classe é marcado como private e desta forma se tentarmos usar o operador new com essa classe teremos um erro;

Somente a própria classe terá acesso a este método e é o que ela faz na linha de código :

private static readonly MySQLDao instanciaMySQL = new MySQLDao();

usando o operador new.

O atributo instanciaMySQL é obtido via método getInstancia que é do tipo da classe; Este método retornará sempre o mesmo objeto.

No formulário mainform.cs inclua um componente DataGridView e um componente MenuStrip e defina a opção Sair conforme o leiaute abaixo

Agora defina os namespaces que iremos usar neste formulário :

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data;

namespace daoMySQL

No evento Load do formulário inclua o método init() que irá será usado para acessar o MySQL;

void MainFormLoad(object sender, EventArgs e)
{
	init();
}

O método init() é dado a seguir:

	public void init()
	{
		using (MySqlConnection conexaoMySQL = MySQLDao.getInstancia().getConexao())
		{
			try
			{
			        conexaoMySQL.Open();
			
			        string mSQL = "Select * from Mensagens";
				
			        MySqlCommand cmd = new MySqlCommand(mSQL,conexaoMySQL);
			        MySqlDataAdapter da = new MySqlDataAdapter(cmd);
				
			        DataTable dtMensagens = new DataTable();
                		        da.Fill(dtMensagens); 
                		        this.dataGridView1.DataSource = dtMensagens;
			}
			catch (MySqlException msqle)
			{
				MessageBox.Show("Erro de acesso ao MySQL : " + msqle.Message,"Erro");
			}
			finally
			{
				conexaoMySQL.Close();
			}
		}
	}

Após obter a instância do MySQL efetuamos a conexão e usando um DataAdapter preenchemos um DataTable para exibir o resultado no DataGridView;

E com isso acabamos de acessar o MySQL em uma aplicação Windows Forms usando o provider MySQL Connector/5.1 usando o padrão Singleton e obtendo a string de conexão do arquivo de configuração app.config.

Pegue o projeto completo aqui: daoMySQL.zip

referências:

- MySQL - Vinculando , Importando e Exportando tabelas do Access
-
Visual Basic - Acessando MySQL com ADO usando um Driver ODBC
-
Visual Basic - Acessando MySQL com ADO
-
VB  e  MySQL -  Gerenciando dados
-
MySQL - Distribuindo o MySQL com sua aplicação
-
MySQL - Operações básicas com SQL
  ASP.NET - Acesso ao MySQL  


José Carlos Macoratti