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:
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