Gravando Dados no Banco
Bem, agora que já temos a base de dados criada e o conector .Net do MySQL instalado, vamos ver como gravar dados no MySQL a partir do C#.
O primeiro passo é inserir a referência ao MySQL no Solution Explorer. Conforme já explicado, basta clicar com o botão direito em References, depois em Add, Add Reference e seleciona-la na aba .Net. A figura abaixo ilustra como o componente será exibido depois de adicionado.
Agora vamos abrir o formulário de cadastro e começar a inserir os códigos que farão a comunicação com o banco. O primeiro passo é adicionar o namespace using MySql.Data.MySqlClient; no início do código.
Em seguida vamos criar as variáveis globais para acesso:
A variável do tipo MySQLConnection é responsável por efetuar a conexão com o banco. É através dela que serão enviados dados como usuário e senha para o acesso ao SGBD.
Já a variável do tipo MySQLCommand fará o armazenamento e o envio do comando que queremos executar.
Vejam como tudo é simples e intuitivo até aqui:
- MySQLConnection é responsável pela conexão.
- MySQLCommand é responsável pelo envio do comando.
Continuando...
Para que a variável minhaConexao, do tipo MySQLConnection, possa efetuar a conexão com o banco é necessário que ela saiba informações como: em qual computador está o banco (pois ele poderia não estar no mesmo computador onde a aplicação está), qual a base de dados que será utilizada, e qual o usuário e sua senha para acesso ao banco. Estes dados são passados a ela como parâmetros. O comando completo, a ser colocado já dentro do bloco de código de inicialização do formulário, será:
Explicando o MySQLConnection
Comentando este código enorme, que parece complicado, mas não é, teremos:
A etapa seguinte já deveria ser sobre inserir código no método Click do botão btnSalvar, mas existe um detalhe importante que deve ser observado antes disso. Temos um campo responsável por receber a data de nascimento do usuário. Devemos esperar que ele digite algo no formato dd/mm/aaaa, mas o campo Date do MySQL só recebe dados no formato aaaa/mm/dd, então devemos fazer essa conversão primeiro, para que não haja erro no momento da inserção de dados. Vou criar um método chamado formataData, que será acionado assim que o botão Salvar for clicado. O código do método será esse:
Abrir janela com código copiável
O método é bastante simples, mas fazendo um breve comentário, o que está acontecendo aí é o recebimento da data em formato brasileiro, em seguida acontece a separação do dia, mês e ano através do método Substring. Na sequência a variável dataUS concatena todas elas na ordem correta a ser enviada ao MySQL e a retorna.
Para receber o retorno desta função eu criei a variável dataFormatada, que já foi inserida na primeira linha do método Click do botão "Salvar", da seguinte forma:
string dataFomatada = formataData(txtDataNascimento.Text);
Agora que já temos a data formatada, podemos continuar. O código todo da função Click do botão Salvar ficará da seguinte forma:
Clique aqui para abrir uma janela com código copiável:
Agora vou comentar este código, que merece muita atenção, já que contém a montagem da nossa primeira string de comando SQL.
Continuando os comentários...
Eu comentei o código todo apenas para explicar o método por completo, mas o que nos interessa aí é a montagem do comando, pegando os dados a partir dos campos do formulário. Na verdade não há nenhuma grande novidade e, repetindo o que foi dito nos comentários, o foco deve ser colocado nas aspas, que é onde 90% dos erros acontecem.
Bem, mas agora vamos executar o código e ver se funciona...
Inseri alguns dados, cliquei em "Salvar" e recebi a mensagem de sucesso. Como programamos para que o sistema só exiba essa mensagem em caso de inserção bem sucedida, nenhum erro ocorreu, mas vou abrir o MySQL e dar um SELECT na tabela "cliente" apenas para demonstrar. Vejam abaixo o resultado:
Aí estão os dados corretamente inseridos no banco!
Ainda podemos melhorar um pequeno detalhe no formulário de cadastro de clientes. Como foi possível notar na execução de vocês, após a mensagem de sucesso, o formulário com os dados inseridos continua aberto, quando o ideal é que ele fosse fechado, para reduzir as chances do usuário tentar cadastrar dois usuários idênticos, o que geraria um erro de duplicação de chave primária no banco de dados. Para impedir isso é muito simples! Basta que adicionemos, após esse MessageBox, o comando Close(). O código deverá ficar assim:
Agora, após o usuário clicar em OK na caixa de mensagem que alertará sobre o sucesso da operação, o formulário de cadastro será automaticamente fechado e o programa retornará para sua tela principal.
Com isso encerramos a parte de inserção de dados. O que é importante guardar daqui é que os comandos de inserção são exatamente iguais a uma inserção pelo Console do MySQL. O que temos de diferente são as variáveis responsáveis por fazerem a conexão com o SGBD e o envio do comando, apenas isso! Na sequência, veremos como utilizar o famoso DataGridView, e com ele removeremos um usuário.