Minicursos - C#

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.

Gravando Dados no Banco

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.

Gravando Dados no Banco

Em seguida vamos criar as variáveis globais para acesso:

Gravando Dados no Banco

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

Gravando Dados no Banco

Explicando o MySQLConnection

Comentando este código enorme, que parece complicado, mas não é, teremos:

Gravando Dados no Banco

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:

Gravando Dados no Banco

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:

Gravando Dados no Banco

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.

Gravando Dados no Banco

Continuando os comentários...

Gravando Dados no Banco

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

Gravando Dados no Banco

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:

Gravando Dados no Banco

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:

Gravando Dados no Banco

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.



Algumas notícias

O que acontece com o cérebro no exato momento em que morremos

O que passa em nossa cabeça no momento da morte? Não se sabe exatamente e, embora os cientistas tenham alguma resposta, a resposta continua sendo um grande mistério. Além de difícil solução, tentar respondê-la pode criar implicações éticas. No entanto, uma equipe de cientistas da Universidade...

Ler Notícia Completa

Operada e devolvida ao útero, menina que nasceu duas vezes hoje 'acorda sorrindo toda manhã'

Um bebê pode nascer duas vezes? Não é o caso da absoluta maioria das crianças, mas foi assim para a pequena Lynlee Boemer. Em outubro de 2015, sua mãe, Margaret Boemer, descobriu que estava grávida de gêmeos. Ela sofreu um aborto espontâneo, mas um dos bebês sobreviveu. Com dez semanas de ges...

Ler Notícia Completa

Médicos dizem estar perto de chegar a exame de sangue para todos os tipos de câncer

Cientistas dizem que estão mais perto de criar um exame de sangue universal, capaz de identificar todos os tipos de câncer. Estudo conduzido com 1.005 pacientes por uma equipe da Universidade Johns Hopkins, dos Estados Unidos, testou um método que detecta oito tipos de proteínas e 16 mutações ge...

Ler Notícia Completa

Formato JPEG está com os dias contados

Há quantos anos você ouve falar em arquivos JPG? O formato já era utilizado nos primórdios da web comercial nos anos 1990, vivendo há mais de 20 anos como o principal método de compressão de imagens do público. No que depender de Google, Mozilla e outras empresas, isso pode mudar dentro de algum...

Ler Notícia Completa

EUA aprovam 'droga viva', 1ª terapia contra câncer que reestrutura sistema imunológico do paciente

Os Estados Unidos aprovaram o primeiro tratamento que reestrutura o sistema imunológico do paciente para atacar o câncer. A agência reguladora de medicamentos do país - a FDA - diz que a decisão foi um momento "histórico" e que a medicina agora "entra em uma nova fronteira". A companhia Novar...

Ler Notícia Completa

Cientistas norte-americanos criaram anticorpo capaz de atacar 99% das variações de HIV

Um grupo formado por pesquisadores do Instituto Nacional de Saúde (NIH), dos Estados Unidos, e da empresa farmacêutica Sanofi criaram em laboratório anticorpos superdesenvolvidos capazes de atacar 99% das cepas de HIV. O feito é ainda mais significativo por ser capaz até mesmo de prevenir a infec...

Ler Notícia Completa

Facebook investirá mais de US$ 1 bilhão em conteúdo original em 2018

Anunciada em agosto, a plataforma original de vídeos do Facebook, Watch, parece ser a grande aposta de Mark Zuckerberg para o ano que vem. De acordo com o TechCrunch, a empresa deve investir US$ 1 bilhão para criar e incentivar iniciativas voltadas para a produção de conteúdo audiovisual exclu...

Ler Notícia Completa

Software da Adobe é capaz de manipular gravações de voz e criar frases com perfeição

O software se chama Voco, foi desenvolvido pela Adobe (a mesma criadora do Photoshop) e permite manipular gravações de voz com uma precisão inédita, inclusive criando frases que a pessoa não disse. Na demonstração do app, um técnico forjou uma gravação em que um homem dizia “eu beijei a Jordan...

Ler Notícia Completa

Você sabia?

O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.

Apenas no ano de 1982, o clássico Pac Man vendeu mais de 400 mil máquinas de fliperama em todo o mundo e recebeu cerca de 7 bilhões de moedas nestas máquinas. Saiba mais.

O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente game!

O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.

Você gostará destes vídeos: