Minicursos - C#

DataGridView - DataTable - DataAdapter


Esse tópico será um pouco mais extenso que os anteriores, e talvez mais importante, pois falarei sobre três assuntos fundamentais para a criação de qualquer aplicativo, que são o DataGridView, DataTable e DataAdapter. Antes de entrarmos no código e em alterações em nosso aplicativo de cadastro de clientes, vamos às perguntas que nos permitirão prosseguir com a atualização do programa.

O que é um DataGridView?

O DataGridView é um componente capaz de exibir dados em formatos tabulares. Ele pode criar linhas ou colunas dinamicamente, de acordo com os dados que receber. Estes dados podem ser originados pelo próprio usuário, por um arquivo texto ou por um banco de dados, que é o mais comum. É possível personalizar um DataGridView, alterando suas cores, fontes e até ocultando colunas, que é um artifício muito útil, já que uma coluna oculta não é exibida ao usuário, mas pode ter seus dados processados normalmente pela aplicação.

O que é um DataTable?

O DataTable é só uma classe que nos fornece várias funcionalidades para manipular dados que serão representados em forma tabular. Na prática ele acaba funcionando como um recipiente temporário para armazenamento de dados, pois ele é alimentado com o resultado de uma consulta feita ao banco de dados, e depois serve para alimentar o DataGridView.

O que é um DataAdapter?

O DataAdapter é um adaptador capaz de interligar classes que manipulam dados em C# e o banco de dados em si. No nosso aplicativo o utilizaremos para interligar um DataTable com o MySQL.

Bem, estes foram os três importantes conceitos que serão utilizados aqui para a remoção dos clientes cadastrados em nosso banco de dados. Nenhum deles é difícil e seus nomes são bastante sugestivos para suas próprias funções.

O DataGridView exibe dados tabulares, em formato de um Grid, por isso este nome. O DataTable armazena temporariamente os dados em formato de uma tabela e o DataAdapter é um adaptador, que funciona quase como um tradutor entre classes que manipulam dados no C# e o banco de dados. É simples!

Agora vamos continuar...

Vou abrir nossa pequena aplicação de exemplo e, em seguida, o formulário frmRemoveCliente, que atualmente está da seguinte forma:

DataGridView - DataTable - DataAdapter

Vou fazer uma pequena alteração nele antes de falarmos sobre o DataGridView em si. Vejam como ficará:

DataGridView - DataTable - DataAdapter

Adicionei um botão “Procurar”, que chamei de btnProcurar, e movi o botão “Remover” para baixo. Agora vou arrastar o DataGridView da barra de ferramentas para o formulário, deixando-o da seguinte forma:

DataGridView - DataTable - DataAdapter

Em seguida vou desmarcar os checkboxes que habilitam adição, edição e remoção do conteúdo do DataGridView, pois não faremos a manipulação dos dados dessa forma, através da Interface.

Após desmarcar estas três opções, vamos redimensionar o componente, para que ele ocupe, na horizontal, quase todo o formulário, conforme ilustra a figura abaixo:

DataGridView - DataTable - DataAdapter

Agora vou renomear o DataGridView para dgvCliente, alterando sua propriedade (Name).

Na sequência vamos inserir o Namespace para manipulação dos dados MySQL, ou seja, a using MySql.Data.MySqlClient;

Em seguida vamos criar estes objetos dentro do "public partial class frmRemoveCliente : Form"

private MySqlConnection minhaConexao;
private MySqlCommand meuComando;
private MySqlDataAdapter objAdapter;

Mais abaixo, dentro do método construtor do formulário, ou seja, o public frmRemoveCliente(), colocarei a string de conexão com o banco, deixando-o da seguinte forma:

public frmRemoveCliente()
{
InitializeComponent();
minhaConexao = new MySqlConnection("Persist Security Info = False; server = localhost; database = ContemBits; uid = root; pwd = root");
}

Por enquanto nosso código teve as seguintes alterações:

DataGridView - DataTable - DataAdapter

Agora vamos fazer uma pausa e entender a dinâmica deste formulário. A ideia é que o usuário digite, no Textbox, o nome do cliente que deseja excluir e o sistema exiba, abaixo, todos os clientes com aquele nome (ou parte dele). Então, após selecionar um deles no DataGridView, ele clique no botão “Remover” e essa remoção aconteça. Como primeiro passo, então, vamos nos preocupar com a busca a partir do nome digitado.

A string que fará isso no banco de dados a partir do nome digitado pelo usuário será:

string strComandoMySQL = "SELECT nome AS Nome, cidade AS Cidade, email AS Email FROM cliente WHERE Nome like '%" + txtNomeCadastroRemocao.Text + "%'";

Eu inseri as porcentagens no parâmetro like para que seja possível buscar também a partir de partes dos nomes. Pedi a exibição de apenas 3 colunas (Nome, Cidade e E-mail), embora nossa tabela tenha bem mais que isso.

Esta string pode ser criada dentro do código referente ao evento Click do botão Procurar. Também dentro deste bloco de código criaremos nosso DataTable, que armazenará temporariamente a tabela retornada do banco de dados. O código, por enquanto, deverá ficar da seguinte forma:

DataGridView - DataTable - DataAdapter

Agora que temos nosso DataTable pronto, vamos inserir o código completo do botão Procurar.

DataGridView - DataTable - DataAdapter

Comentando a parte que nos interessa, depois da verificação de conexão aberta, temos:

DataGridView - DataTable - DataAdapter

O código completo deste formulário ficará como ilustra a figura abaixo:

DataGridView - DataTable - DataAdapter

Bem, agora vou executar a aplicação e, como tenho um usuário chamado "Daniel Neri" cadastrado no banco de dados, vou pedir uma busca pelo usuário chamado "Dan", pois como o código MySQL foi montado para buscar pedaços do nome, devemos ter o retorno deste usuário. Vejamos:

DataGridView - DataTable - DataAdapter

Aí está o usuário cadastrado no banco!

E notem que as colunas automaticamente geradas no DataGridView são as que determinamos na busca no comando MySQL. Apenas para relembrar, o comando foi:

DataGridView - DataTable - DataAdapter

No entanto, antes de pensarmos no código da remoção em si, vamos melhorar um pouco o visual do DataGridView. Vamos começar alterando a propriedade BackgroundColor:

DataGridView - DataTable - DataAdapter

Em seguida vamos alterar a AutoSizeColumnsMode para que fique com o valor Fill. Esta propriedade faz com que as colunas retornadas pelo SGBD ocupem todo o DataGridView, conforme ilustra a imagem abaixo:

DataGridView - DataTable - DataAdapter

E executando, veremos o DataGridView da seguinte forma:

DataGridView - DataTable - DataAdapter

A aparência já ficou melhor, mas podemos melhorar ainda mais. Da forma como está é possível que o usuário adicione linhas à nossa DataGridView, ou edite as existentes, mas não queremos isso. Neste exemplo queremos fazer uso desta importante ferramenta apenas para exibir os dados, portanto vamos alterar mais quatro propriedades, que são:

ReadOnly, que ficará com o valor True
AllowUserToAddRows, que deverá valer False
AllowUserToDeleteRows, que também valerá False
ColumnHeaderHeightSizeMode, com valor de AutoSize

Executando agora, teremos:

DataGridView - DataTable - DataAdapter

Agora não temos mais a última linha em branco, para adição de dados, e o DataGridView é somente leitura, ou seja, apenas para exibição de dados, como gostaríamos.

Para tornar mais nítido as operações a seguir, vou cadastrar mais dois usuários com nomes parecidos com o meu, deixando a consulta pelo trecho “Dan” retornando os seguintes resultados:

DataGridView - DataTable - DataAdapter

A partir de agora vamos começar o código para remoção de dados. A ideia é que o usuário selecione um cliente a ser removido e com essa seleção faremos a remoção dos dados do banco. Vamos iniciar o código do botão "Remover" da seguinte forma:

int indice = dtgCliente.CurrentRow.Index;
string temporaria = dtgCliente[2, indice].Value.ToString();

Comentando, teremos:

DataGridView - DataTable - DataAdapter


DataGridView - DataTable - DataAdapter

Então, agora que temos o email do cliente armazenado na variável “temporaria”, fica fácil montar a string de comando para ser executada no MySQL. Vou demonstrar abaixo e já efetuar a execução, vejam:

DataGridView - DataTable - DataAdapter

Como é possível observar no código acima, a string de conexão foi montada na variável strComandoMySQL, com o comando de remoção sendo concatenado com a variável temporaria. O restante do código já não contém nenhuma novidade.

Vou executar e tentar a remoção do usuário "Danilo Ferreira".

DataGridView - DataTable - DataAdapter

Apenas para constatar que a remoção foi realmente bem sucedida, vou entrar novamente no formulário de remoção de clientes e buscar por todos os clientes que tenham “Dan” no nome, vejam:

DataGridView - DataTable - DataAdapter

Nosso usuário "Danilo Ferreira" não foi encontrado!

Com isso fechamos o tópico sobre remoção de dados. Caso algum dos três importantes conceitos vistos aqui (DataGridView, DataTable e DataAdapter) não tenha ficado claro, sugiro que voltem ao início e leiam o texto novamente. Eles são realmente importantes.

No tópico seguinte faremos a parte de alteração de dados de usuários já cadastrados!



Algumas notícias

Robô que prepara hambúrgueres foi demitido no primeiro dia de trabalho e o motivo é surpreendente!

No início do mês, a rede de lanchonetes dos Estados Unidos CaliBurger começou a usar o robô chapeiro Flippy, desenvolvido pela Miso Robotics, para ajudar a produção de hambúrgueres. O objetivo é que o robô ficasse em uma das lojas de Pasadena, na Califórnia, para ajudar os humanos durante os mo...

Ler Notícia Completa

O que havia antes do Big Bang, segundo Stephen Hawking

Existia algo antes do começo de tudo? Para além da explicação teológica de que existia Deus, que satisfaria os religiosos, os especialistas buscam resolver o enigma que não deixa descansar as mentes que se dedicam a estudar o assunto. A ciência em geral aceita a teoria do Big Bang: o momento...

Ler Notícia Completa

Polícia chinesa já faz uso de óculos com reconhecimento facial

A polícia chinesa encontrou uma nova forma vigiar ainda mais os cidadãos. Conforme relata o The Wall Street Journal, os policiais locais estão usando óculos equipados com câmeras de reconhecimento facial para detectar criminosos que estejam tentando fugir principalmente pelas estações de trem. A...

Ler Notícia Completa

Facebook pede para usuários determinarem quais sites de notícias são confiáveis

Recentemente, o Facebook anunciou uma mudança radical no feed, que vai priorizar conteúdo que gere interação em vez de notícias. Agora a empresa revelou que também vai mexer em quais tipos de notícias aparecem no seu feed, valorizando as páginas que são consideradas mais confiáveis para combater...

Ler Notícia Completa

Bisbilhotar a vida dos outros no Facebook faz mal

Passar bastante tempo usando redes sociais é bom ou ruim? Esta é uma pergunta que vários especialistas já fizeram, e o Facebook, que é parte interessada no assunto, resolveu consultar a comunidade acadêmica norte-americana para responder a esse questionamento. De modo geral, a conclusão dos vári...

Ler Notícia Completa

Conheça a terapia que previne o HIV, que começará a ser oferecida no Brasil gratuitamente

A partir deste mês, o governo brasileiro irá disponibilizar no Sistema Único de Saúde (SUS) a terapia PrEP, que, por meio de um comprimido por dia, previne a infecção pelo HIV. O remédio, que tem efeitos colaterais, será reservado para casos específicos dentro de grupos de vulnerabilidade, como...

Ler Notícia Completa

Brecha no navegador Tor exibia os IPs reais dos usuários

O Tor é um navegador criado para navegação anônima, protegendo o usuário de ser identificado tanto para fins nobres (denúncias contra governos autoritários, por exemplo) quanto para fins criminosos (tráfico de drogas e pedofilia, por exemplo). Então, é compreensível que a comunidade tome um susto...

Ler Notícia Completa

Novo Firefox consome 30% menos RAM que o Google Chrome

A próxima versão do Firefox representa uma mudança tão drástica que a Mozilla decidiu ignorar sua numeração — que é 57 — e chamá-la de Firefox Quantum. O navegador foi todo redesenhado, tanto em termos de comportamento quanto no que se refere a design, e a Mozilla garante que ele é mais eficien...

Ler Notícia Completa

Ataques virtuais contra internet das coisas vem aumentando significativamente

O mundo está cada vez mais conectado. Se antes os smartphones permitiam acessar a internet, hoje os dispositivos conectados, incluindo TVs, geladeiras e carros, já fazem parte do dia a dia. No entanto, a internet das coisas está se tornando alvo dos cibercriminosos. Dados apresentados durante a...

Ler Notícia Completa

Volkswagen e Mercedes definem data para abolir combustíveis fósseis

Mais duas grandes montadoras anunciaram nesta semana seus planos para começar a abolir de vez os combustíveis fósseis. A Volkswagen revelou que vai oferecer versões elétricas de todos os seus carros a partir de 2030, enquanto a Mercedes-Benz fará o mesmo a partir de 2022. As duas se juntam a uma...

Ler Notícia Completa

PewDiePie se desculpa por vídeo com termo racista e diz: 'Eu sou um idiota'

Felix Kjellberg, o sueco conhecido no YouTube como "PewDiePie", voltou às manchetes nesta semana com uma nova polêmica, dessa vez por usar um termo racista durante uma transmissão ao vivo. Nesta terça-feira, 12, porém, o youtuber mais bem pago do mundo pediu desculpas. Tudo começou no último fim...

Ler Notícia Completa

9 invenções que você provavelmente não sabia que foram criadas ou descobertas por mulheres

Se pedirem para você citar inventores importantes, nomes como Thomas Edison, Alexander Graham Bell e Leonardo da Vinci provavelmente virão à sua mente. Mas e Mary Anderson? E Ann Tsukamoto? Já ouviu falar delas? Talvez não, mas certamente conhece seus feitos: Anderson patenteou o limpador de pa...

Ler Notícia Completa

Estudo da Intel mostra que as pessoas ainda têm medo dos veículos autônomos

A Intel fez um estudo para verificar como as pessoas estão reagindo e o quanto elas estão propensas a utilizar um veículo autônomo – e os últimos resultados revelaram que os humanos ainda têm medo dos carros que saem andando sem um motorista. De acordo com o “Intel Trust Interaction Study”...

Ler Notícia Completa

Inteligência Artificial está escrevendo o próximo livro de Game of Thrones

Não é mais novidade para ninguém que Game of Thrones é um fenômeno, mas o fato de a história não ter sido terminada nos livros que inspiraram a série causa uma certa apreensão em muita gente – e uma conclusão da saga deve sair só em 2019. Então, já que George R. R. Martin não dá indícios de que...

Ler Notícia Completa

Jovem com esclerose lateral amiotrófica armazena a própria voz para quando não conseguir mais falar

Lucy Lintott é a escocesa mais jovem já diagnosticada com esclerose lateral amiotrófica (ELA), a mesma doença degenerativa do físico britânico Stephen Hawking. Aos 22 anos, ela já tem parte da fala comprometida, processo que tende a se intensificar com o passar do tempo. "Ainda bem que existe...

Ler Notícia Completa

Como a Inteligência Artificial já está mudando salas de aula no Brasil e no mundo

Quando o estudante Anderson dos Santos Andrade, 16, faz o login na plataforma virtual da escola, tem diante de si seu plano de estudos: faltam seis vídeos de biologia para assistir e, depois, completar os exercícios online. Um dos questionários vem com a hashtag #cainaprova, então Anderson sabe...

Ler Notícia Completa

CEO que implantou chips no corpo de funcionários nos EUA diz que Brasil é o próximo mercado

Uma empresa de tecnologia de Wisconsin, nos Estados Unidos, causou furor ao anunciar que implantaria chips no corpo de seus funcionários para substituir crachás, chaves e a necessidade de senhas em computadores e equipamentos eletrônicos. Um mês após o anúncio, passado o frenesi inicial da impre...

Ler Notícia Completa

A pirataria de 'Game of Thrones' chegou a derrubar o Pirate Bay

Poucos eventos têm a capacidade de sacudir as estruturas da internet como novos episódios de “Game of Thrones”. Essa força foi sentida na pele pelos responsáveis pelo Pirate Bay, que não conseguiram manter o funcionamento do site normal. Os recordes de pirataria de “Game of Thrones” não são novi...

Ler Notícia Completa

Marcapassos desatualizados podem ser hackeados com facilidade

A FDA, espécie de "Anvisa dos Estados Unidos", enviou uma notificação nesta semana para os consumidores norte-americanos alertando que 465 mil marcapassos estão vulneráveis a ataques hackers e precisam de uma atualização de software. Conforme relata o Engadget, os dispositivos são da empresa de...

Ler Notícia Completa

China efetua a primeira transmissão 'à prova de hackers' com satélite quântico

No ano passado, a China levou ao espaço o primeiro satélite quântico do mundo visando criar uma nova era na transmissão de dados e informações. Hoje (10), o país asiático informou a realização da primeira transmissão bem sucedida com o equipamento. A comunicação entre o satélite e a Terra é à...

Ler Notícia Completa

YouTube agora mostra para os criadores de conteúdo o potencial de lucro de um vídeo

Muita gente que produz conteúdo para o YouTube depende bastante dos valores que pagam para veicular propagandas nesses vídeos, às vezes, fica um pouco perdida na hora de saber como as coisas vão funcionar realmente. Além dos problemas com vídeos que são tirados do ar sem o menor aviso ou motivo...

Ler Notícia Completa

Dormir é a mais nova habilidade do algoritmo de Inteligência artificial do Google!

Depois de dominar videogames e jogos de tabuleiro, a inteligência artificial do Google agora aprendeu um novo truque: dormir. Em um post feito no blog oficial do projeto DeepMind, o Google explicou como está fazendo para tornar a sua inteligência artificial mais humana. E, para isso, ela precisa...

Ler Notícia Completa

Você sabia?

O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.

Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.

Ao completar o nível 99 do jogo Duck Hunt, para Nintendo, o jogo retorna ao primeiro nível, mas um bug impede que se acerte os patos neste recomeço. Este é um exemplo do que é chamado no mundo dos games de "Kill Screen".

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!

Você gostará destes vídeos: