Introdução

O MySQL é um dos bancos de dados relacionais mais utilizados atualmente no desenvolvimento de aplicações web, por ser leve, grátis e de fácil instalação.

Apesar de a linguagem mais utilizada para acessar esse banco ser o PHP, que traz funções nativas de acesso, ele pode ser usado por outras tecnologias como o .NET Framework e Delphi. Neste artigo será explicado como conectar a um banco de dados MySQL a partir de uma aplicação .NET. Para exemplo usaremos uma aplicação ASP.NET Web Forms, mas o mesmo procedimento pode ser utilizado para outros tipos de projetos.

Instalando o MySQL Connector

Como sabemos, o .NET Framework não fornece recursos nativos para acesso ao MySQL, por isso é preciso instalar o MySQL Connector, um driver que disponibiliza classes para acessar esse banco a partir do Visual Studio.

Para baixar o MySQL Connector, visite o site www.mysql.com e clique na aba “Downloads (GA)”, conforme ilustra a imagem abaixo.

Aba de downloads do MySQL

Figura 1: Aba de downloads do MySQL

Já na página de downloads, do lado esquerdo haverá um menu com algumas categorias de itens para download, como pode ser visto na Figura 2. Clique no item “MySQL Connectors”.

Categoria de conectores do MySQL para download

Figura 2: Categoria de conectores do MySQL para download

Na página seguinte tem-se uma lista dos vários conectores disponíveis, no nosso caso devemos fazer download do conector para .NET (item “Conector/Net”). Clique sobre ele e na página para a qual será redirecionado, selecione a plataforma “Microsoft Windows”. Aqui utilizaremos o arquivo msi (instalador) para facilitar o processo de instalação.

Após concluir o download, execute o instalador. O processo de instalação é bastante simples e dispensa maiores comentários. Basta seguir a ordem e opções originalmente propostas no programa.

Utilizando o conector o Visual Studio

Tendo instalado o conector, abra o Visual Studio e crie uma nova aplicação “ASP.NET Web Forms” através do menu File > New > Web Site.

Em seguida, no Solution Explorer clique com a direita sobre o item “References” e depois no subitem “Add Reference”. Na janela que se abrirá, selecione a categoria “Extensions”, localize e marque o item MySql.Data e clique em “OK”, como ilustrado na Figura 3.

Referenciando a biblioteca de classes de acesso ao MySQL

Figura 3: Referenciando a biblioteca de classes de acesso ao MySQL

Se você já conhece a biblioteca ADO.NET para acesso ao SQL Server ou a OleDB para acesso a Access, por exemplo, não terá dificuldade com as classes de acesso ao MySQL, pois a estrutura é basicamente a mesma. Enquanto o nome das classes do namespace Sytem.Data.SqlClient começa com “Sql”, como SqlConnection e SqlCommand, as classes do namespace MySql.Data.MySqlClient têm o nome iniciando com “MySql”, como MySqlConnection e MySqlCommand.

Para testar o funcionamento dessas classes, adicione um GridView à página principal da aplicação, como mostra o código a seguir.

Listagem 1: Código do GridView para exibição de dados

<asp:GridView ID="gdvDados" runat="server" AutoGenerateColumns="true" Width="100%"/>

Não trataremos aqui de configurações de layout, pois não é o foco do artigo.

Em seguida, acesso o arquivo .cs da página e adicione a referência ao namespace MySql.Data.MySqlClient, conforme o código abaixo.

Listagem 2: Referenciando o namespace MySqlClient

using MySql.Data.MySqlClient;

Agora, no evento Load da página, adicione o seguinte código para exibir os registros de uma tabela qualquer no GridView.

Listagem 3: Listando registros de uma tabela

MySqlConnection conexao = new MySqlConnection("server=SERVIDOR;User Id=USUARIO;database=BANCO; password=SENHA");
MySqlCommand comando = new MySqlCommand("SELECT * FROM PRODUTOS", conexao);
DataTable tabela = new DataTable();
try
{
    conexao.Open();
    gdvDados.DataSource = comando.ExecuteReader();
    gdvDados.DataBind();
}
finally
{
    conexao.Close();
}

Note que ao instanciar o objeto MySqlConnection é preciso definir a string de conexão. Altere os dados de acordo com seu servidor e banco de dados para que o exemplo funcione na sua máquina.

Nesse caso foi usado um banco de dados qualquer com uma tabela chamada PRODUTOS que contém três registros, cujo código de criação e povoamento é apresentado a seguir.

Listagem 4: Script de criação da tabela utilizada

CREATE TABLE PRODUTOS
(
	Referencia	VARCHAR(10),
	Descricao	VARCHAR(50),
	Estoque		FLOAT
);

Listagem 5: Script de povoamento da tabela PRODUTOS

INSERT INTO PRODUTOS (Referencia, Descricao, Estoque) VALUES ('001', 'Feijão', 10);
INSERT INTO PRODUTOS (Referencia, Descricao, Estoque) VALUES ('002', 'Arroz', 4);
INSERT INTO PRODUTOS (Referencia, Descricao, Estoque) VALUES ('003', 'Farinha', 10);

Execute o projeto e visualize o resultado no browser (Figura 4).

Resultado do primeiro exemplo

Figura 4: Resultado do primeiro exemplo

Como esperado, foram listados todos os registros da tabela no GridView.

Apenas para complementar o exemplo, vamos adicionar uma funcionalidade de busca pela descrição do produto. Para isso, adicione um TextBox e um Button acima do GridView, conforme o código da Listagem 6.

Listagem 6: Controles para busca

<asp:TextBox ID="txtBusca" runat="server" Width="100%" />
<asp:Button Text="Busca" runat="server" ID="btnBuscar" />
<hr />
<asp:GridView ID="gdvDados" runat="server" AutoGenerateColumns="true" Width="100%"/>

Dessa vez removeremos o código do evento Load da página e adicionaremos no evento Click do botão, fazendo algumas alterações.

Listagem 7: Evento Click do botão

MySqlConnection conexao = new MySqlConnection("server=localhost;User Id=root;database=loja; password=123456");
MySqlCommand comando = new MySqlCommand("SELECT * FROM PRODUTOS WHERE Descricao LIKE @BUSCA", conexao);
DataTable tabela = new DataTable();
try
{
    conexao.Open();
    comando.Parameters.AddWithValue("BUSCA", "%" + txtBusca.Text + "%");
    gdvDados.DataSource = comando.ExecuteReader();
    gdvDados.DataBind();
}
finally
{
    conexao.Close();
}

Dessa vez adicionamos um parâmetro à consulta e passamos para ele o valor do TextBox. Com isso, ao clicar no botão devem ser listados os registros cuja coluna Descricao contém o texto digitado.

A imagem a seguir mostra esse novo exemplo em funcionamento.

Resultado do segundo exemplo

Figura 5: Resultado do segundo exemplo

Podemos notar que foi digitada a letra “f” no TextBox e, ao clicar no botão, apenas dois registros foram listados por conter essa letra em sua descrição.

Aqui foi utilizado o Visual Studio 2012, mas outras versões do IDE podem ser igualmente aplicadas.

Conclusão

O principal objetivo desse artigo foi mostrar como proceder para conseguir conectar aplicações .NET a bancos de dados MySQL, posto que essa funcionalidade não é fornecida nativamente.

Para maiores informações sobre as classes que compõem a biblioteca de acesso a esse banco, é interessante visitar página do MySQL e ler a documentação oficial no link http://dev.mysql.com/doc/refman/5.0/en/connector-net-ref-mysqlclient.html.

Então finalizamos aqui esse artigo. Até o próximo.