segunda-feira, 27 de agosto de 2012

Criando objeto de acesso a dados para banco de dados MySQL

Neste Post estudaremos como criar uma classe responsável para acesso ao banco de dados MySql.
Esta classe servirá para uma preparação, quando uma aplicação fizer alguma transação com o banco de dados, seja um cadastro, uma exclusão ou uma consulta, a mesma deve saber quais sãos os objetos que ela vai utilizar. Neste caso usaremos os objetos para MySql (estão definidos na dll MySql.Data.dll).

Fazendo referência.

O SGBD MySql não foi desenvolvido pela Microsoft e seus objetos não são nativos do .NET Framework, isso significa que teremos de utilizar uma dll de terceiro. 

O instalador do conector MySql .NET pode ser encontrado no link:
http://dev.mysql.com/downloads/connector/net/6.4.html

Após a instalação poderemos adicionar a referência da dll do MySql ao nosso projeto. (talvez seja necessária a reinicialização do Visual Studio se ele estiver aberto).
Para adicionar referência basta dar um clique direito do mouse em cima do projeto no Solution Explorer (Caso o Solution explorer não esteja visível, basta utilizar o atalho Ctrl + Alt + S) e selecionar a opção Adicionar Referência.

Observe o nome da dll Mysql.Data   

Para ter acesso aos objetos MySql.Data é necessário importa-los para classe que estamos criando. 




O próximo passo é informarmos os dados do servidor onde está a base de dados que iremos usar. 
No exemplo a seguir estou referenciando uma base de dados MySql local, instalada no meu próprio computador. 

String de Conexão.
Na primeira linha do código acima temos uma constante que, diferentemente de uma variável, tem seu valor imutável. O uso de uma constante é discutível para este caso. Existe uma possibilidade de trabalharmos futuramente com um servidor remoto ou até mesmo a possibilidade da senha do servidor MySql mudar. Futuramente vamos abordar práticas melhores para tratar strings de conexão. 
A string de conexão é escrita em formato texto, por esse motivo declaramos no código da classe com String. Na linha a seguir veremos que a  string de conexão passará a ser um objeto. 
No início da string temos o atributo server, se estiver usando uma instalação do MySql do seu próprio computador basta colocar a palavra LOCALHOST. Agora, se estiver usando usando uma conexão remota informe o número IP  ou o nome do servidor. No atributo User Id foi informado o Usuário Raiz root, este usuário tem acesso a todas as funcionalidades do servidor MySql, é altamente recomendável que você crie outros usuários e gerencie os privilégios por segurança. Nas versões mais atuais do SGBD MySql o usuário root não pode ser usado remotamente.
Uma observação importante: Se você estiver usando a instalação do MySql sem senha, basta eliminar o PWD= suasenha;
Por fim, temos o atributo database onde você deve referenciar o nome da base de dados que vai utilizar. 

Objeto de conexão. 
Na segunda linha do código acima trata a instância do objeto de conexão. Este objeto é do tipo MySqlConnection (tipo construído dentro da dll MySql.Data). 
Podemos observar que na instância desse objeto existe um parâmetro: 

O valor passado como parâmetro: conexaoString é a constante que criamos acima, com os dados do servidor MySql em formato texto. 
O uso desse "parâmetro" na instância do objeto do tipo MySqlConnection é chamado de construtor. 
Para explicar de forma simples um construtor imagine que  um objeto é como um bolo, e o construtor serve para criar esse bolo (objeto) já com algumas características definidas, como por exemplo, um bolo em formato de coração. O construtor é uma forma para criar bolos diferentes.  Neste caso estamos criando um objeto do tipo MySqlConnection que já vem com a característica dos dados do nosso servidor MySql. 





Já temos em nossa aplicação o objeto conexao que de fato se conectará a um servidor MySql, agora precisaremos ter o cuidado de manipular quando essa conexão deverá estar aberta e quando ela deverá estar fechada.

No código acima temos o método AbreConexao ele fará a abertura da conexão quando alguma transação de dados for solicitada. O Código foi estruturado assim:

  1. Verificação se a conexão está fechada.
              If conexao.State = ConnectionState.Closed Then  
              Estamos usando o "SE" para saber se o estado da conexão é fechado.  
              Se ela estiver fechada a condição pedirá que ela seja aberta dentro de um tratamento de erros.


  1. Tratamento de erros
             A instrução TRY significa que a aplicação TENTARÁ executar algo, caso ocorra um insucesso o código alocado dentro do bloco CATCH será executado informando uma mensagem de erro. 

O uso do tratamento de erros é uma boa prática. Em algumas linguagens de programação o uso  é obrigatório dependendo da situação, no nosso caso estaremos manipulando dados em um servidor SGBD, em JAVA, por exemplo, é obrigatório o uso do TRY/CATCH todas as vezes que transações de dados forem utilizadas. No VB.NET o uso é opcional porém é uma boa prática usa-lo para evitar que aplicação se comporte de forma inesperada.  

Algumas exceções podem ocorrer numa tentativa de abertura de conexão, o tempo de "timeout" pode exceder, os dados do usuário podem estar incorretos. O Catch disparará uma mensagem com o erro ocorrido. 

Agora basta criar um método para fechar a conexão assim que terminarmos de utiliza-la. 




                 


No próximo POST criaremos mais alguns métodos para a execução dos comandos SQL. 

Nenhum comentário:

Postar um comentário