acessando bd com c# e usando mysql

29
1 Acessando BD com C# usando o MySQL Profa. Ana Paula Citro Fujarra Rodrigues ACESSANDO BD COM C# USANDO O MYSQL O Visual Studio pode fazer conexão com muitos gerenciadores de Banco de Dados. Por exemplo: Access, SQLServer, MySQL, Oracle, SysBase, entre outros. No nosso caso iremos trabalhar com o MySQl, gerenciador de Banco de Dados gratuito que está disponível no site www.mysql.com . Para criarmos um programa que armazene, pesquise, exclua e altere informações em um banco de dados do tipo MySQL, devemos seguir os seguintes passos: 1. Pegar a DLL de conexão do MySQL 2. Criar o banco de dados com suas tabelas no MySQL 3. Criar o programa no C# 1 - PEGAR A DLL DE CONEXÃO DO MYSQL Para usarmos o Gerenciador de Banco de Dados MySQL, vamos precisar de uma biblioteca para estabelecer a comunicação. Esta biblioteca também disponível no site www.mysql.com .

Upload: fernando-hardt

Post on 27-Oct-2015

162 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Acessando BD Com C# e Usando MySQL

1 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

ACESSANDO BD COM C# USANDO O MYSQL

O Visual Studio pode fazer conexão com muitos gerenciadores de Banco de Dados. Por

exemplo: Access, SQLServer, MySQL, Oracle, SysBase, entre outros. No nosso caso iremos trabalhar com o MySQl, gerenciador de Banco de Dados gratuito que está disponível no site www.mysql.com. Para criarmos um programa que armazene, pesquise, exclua e altere informações em um banco de dados do tipo MySQL, devemos seguir os seguintes passos:

1. Pegar a DLL de conexão do MySQL 2. Criar o banco de dados com suas tabelas no MySQL 3. Criar o programa no C#

1 - PEGAR A DLL DE CONEXÃO DO MYSQL

Para usarmos o Gerenciador de Banco de Dados MySQL, vamos precisar de uma biblioteca

para estabelecer a comunicação. Esta biblioteca também disponível no site www.mysql.com.

Page 2: Acessando BD Com C# e Usando MySQL

2 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Page 3: Acessando BD Com C# e Usando MySQL

3 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Salve o arquivo nos Meus Documentos.

Agora vamos descompactar o arquivo para usarmos o arquivo MySql.Data.dll que está dentro da pasta bin. Este é o arquivo responsável em estabelecer a comunicação entre a programação em C# com o banco de dados em MySQL. Portanto deixe este arquivo sempre dentre da pasta do projeto.

2 - CRIAR O BANCO DE DADOS E SUAS TABELAS NO MYSQL

Abra o prompt de Comando e digite:

Page 4: Acessando BD Com C# e Usando MySQL

4 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

3 - CRIAR UM PROGRAMA NO C#

Agora iremos criar um projeto e adicionaremos a referência da DLL usando o arquivo MySql.Data.dll.

Inicialize o VisualStudio 2005 e siga os passos: 1. Passo: Criar um projeto

Clique no Menu File

Clique no SubItem New e depois clique em Project

Page 5: Acessando BD Com C# e Usando MySQL

5 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

2. Passo: Adicionar a Referência

Troque o nome para Cadastrar

Escolha WINDOWSAPPLICATION

Escolha um diretório

Clique OK

Abra o Solution Explorer

Na aba Browse localize o arquivo MySql.Data.dll

Page 6: Acessando BD Com C# e Usando MySQL

6 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

3. Passo: Criar uma classe para fazer a conexão com o banco de dados (MySQL). A idéia de criar uma classe é para reutilizarmos o código de conexão e acesso ao banco de dados e suas tabelas, isto é, ao invés de copiarmos e colarmos os códigos de FORM em FORM. Para criarmos uma classe siga os passos abaixo: 1. Passo:

A figura abaixo é o código da classe criada, lembrem-se classes não possuem FORM, elas são formadas somente por código.

Page 7: Acessando BD Com C# e Usando MySQL

7 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

2. Passo: Fazer uso da DLL inserida nas Referencias.

3. Passo: Criar as variáveis abaixo:

Observe que esta linha não ficou com o tipo de variável DataTable em verde, isto significa que está faltando o uso de sua DLL

Page 8: Acessando BD Com C# e Usando MySQL

8 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Antes de arrumarmos o erro do uso da DLL, vamos entender para que serve cada variável. A variável conectar irá armazenar todo o caminho da conexão até o banco de dados. Imagine esta variável como uma ponte que liga o C# ao MySQL, sem esta “ponte” não temos caminho para trafegar os comandos em SQL. A variável comando_sql irá armazenar os comandos da linguagem SQL (insert, delete, select, delete), para serem executados pela variável executar_comando. Imagine este comando como sendo o prompt de comando com o MySQL aberto. A variável tabela_memoria irá armazenar o resultado da execução do comando SQL. Estas 4 variáveis sempre iram trabalhar em conjunto 4. Passo: Corrigir o erro da DLL do DataTable 5. Passo: Criar os campos Encapsulados das variáveis. Observe que usamos antes de cada variável a palavra . Esta palavra significa que as variáveis não estarão disponíveis em outro lugar, a não ser dentro deste código. Então o que iremos fazer, pois precisarei usar este código em outros FORMS. A solução é criar os campos encapsulados, que iram permitir o uso destas variáveis em qualquer outro FORM dentro do projeto. Estes campos encapsulados são criados automaticamente pelo Visual Studio. É só seguir os passos abaixo para cada variável.

Page 9: Acessando BD Com C# e Usando MySQL

9 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Page 10: Acessando BD Com C# e Usando MySQL

10 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Selecione cada uma das outras 3 variáveis e refaça os passos para ter um código semelhante ao código abaixo:

Page 11: Acessando BD Com C# e Usando MySQL

11 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

6. Passo: Criar a “ponte” de conexão ao BD do Mysql Observe o final do seu código para adicionar o método no lugar correto.

public String criar_Conexao() { // verificando se existe uma conexão, fecha esta conexão if (conectar != null) { conectar.Close(); } // serve para configurar os parametros do banco de dados string configuracao = string.Format("server={0};user id={1}; password={2}; database=mysql; pooling=false","", "", ""); // tenta estabelecer conectar try { conectar = new MySqlConnection(configuracao); conectar.Open(); }// caso não consiga exibe erro de conexão catch (MySqlException erro) { return ("Erro ao conectar " + erro); } // criar um banco em branco na memória MySqlDataReader banco = null; // fazer uso do banco escolhido MySqlCommand usar = new MySqlCommand("use escola", conectar); // tenta criar o banco try { banco = usar.ExecuteReader(); }// caso ocorra erro catch (MySqlException erro) { return ("Failed to populate database list: " + erro); }// no fim fecha finally { if (banco != null) { banco.Close(); } } return ("Conexão OK!!!"); }

Page 12: Acessando BD Com C# e Usando MySQL

12 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

7. Passo: Criar o Método acessar tabelas.

Desça o código e debaixo para cima observe novamente os três últimos fecha chaves (}). Entre o segundo e o terceiro é o lugar correto para escrevermos este código. public void carregar_tabela(String comando) { tabela_memoria = new DataTable(); comando_sql = new MySqlDataAdapter(comando, conectar); executar_comando = new MySqlCommandBuilder(comando_sql); comando_sql.Fill(tabela_memoria); } 4. Passo: Agora que terminamos nossa classe vamos construir o FORM

5. PASSO: Vamos começar nossa programação de acesso a tabela 1. Passo: Iremos criar uma variável global, que na verdade é um objeto, cópia da classe Conexão. É através desta variável que iremos fazer todo o acesso as tabelas do banco de dados.

Altere o name dos objetos para: LABEL1: lblNome e TEXTBOX1: txtNome LABEL2: lblIdade e TEXTBOX2: txtIdade LABEL3: lblTurma e TEXTBOX3: txtTurma BUTTON1: btnCadastrar DATAGRIDVIEW1: dtgrdExibir FORM1: frmTelaPrincipal

Page 13: Acessando BD Com C# e Usando MySQL

13 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

2. Passo: Ativar o evento LOAD do frmTelaPrincipal (FORM)

3. Passo: Ativar o evento CLICK do btnCadastrar private void btnCadastrar_Click(object sender, EventArgs e) { con1.carregar_tabela("insert into alunos values('" + txtNome.Text + "'," + txtIdade.Text + ",'" + txtTurma.Text + "')"); con1.carregar_tabela("select * from alunos"); dtgrdExibir.DataSource = con1.Tabela_memoria; }

Page 14: Acessando BD Com C# e Usando MySQL

14 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Cadastrando Dados

Revisão

Como foi visto na aula anterior para cadastrar dados em tabelas no MySql é preciso saber

o comando em SQL (INSERT) e escrever o comando, lembrando que:

• Os campos VARCHAR precisam de aspas simples (‘’) e os campos INT não

precisam destas aspas simples, conforme o exemplo:

create table alunos

(

nome varchar(40),

idade int

);

“insert into alunos values (‘”+txtNome.Text+”’,”+txtIdade.Text+”)“

Também vimos que para cadastrar campos AUTOINCREMENTO é necessário usar as

aspas simples com nenhum valor dentro, isto é, vazia, conforme o exemplo abaixo:

create table alunos

(

cod_aluno int auto_increment,

nome varchar(40),

idade int,

primary key(cod_aluno)

);

“insert into alunos values (‘’,’”+txtNome.Text+”’,”+txtIdade.Text+”)“

Page 15: Acessando BD Com C# e Usando MySQL

15 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Cadastrar Campos FLOAT ou DECIMAL

Para cadastrar campos com casas decimais teremos um problema. Os valores com casas

decimais são separados por vírgula (,) para os softwares padrão Windows e para o MySQL as

casas decimais devem ser separadas por ponto (.).

Então teremos que usar um comando específico para fazer esta conversão em cada campo

que houver a necessidade.

Este comando é o Replace(‘valor original’,’valor para substituição’) e pode

ser usado em campo valor String, conforme o exemplo abaixo:

create table funcionario

(

cod_func int auto_increment,

nome varchar(40),

salario float,

primary key(cod_func)

);

“insert into funcionario values

(‘’,’”+txtNome.Text+”’,”+txtSalario.Text.Replace(‘,’,’.’)+”)“

Page 16: Acessando BD Com C# e Usando MySQL

16 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Cadastrar Campos NOT NULL

Para os campos NOT NULL não iremos usar comando SQL, mas sim lógica de

programação, isto é, antes de efetuarmos a linha de comando que faz o insert no banco iremos

verificar se os TEXTBOX dos campos NOT NULL foram preenchidos pelo usuário, para isso

iremos usar o comando IF/ELSE.

Observe o exemplo abaixo:

Para exemplificar e desmonstrar o cadastro dos campos NOT NULL e FLOAT iremos

trabalhar com o projeto disponível no NetStudent com o nome Escola.

Verifica se os campos NOT NULL (da tabela funcionario) não foram preenchidos, iguais de vazio (== “”). Observe que usamos o OR (||), pois o usuário pode ter preenchido um dos dois campos ou nenhum dos dois. Caso o if seja verdadeiro uma mensagem na tela irá aparecer, informando o usuário que os campos devem ser preenchidos, caso contrário o cadastro será efetuado.

Page 17: Acessando BD Com C# e Usando MySQL

17 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Pesquisando Dados

Usando o projeto Escola vamos codificar o botão Pesquisar.

Lembre-se quando efetuamos uma Pesquisa precisamos de um valor de busca, por

exemplo Nome do Funcionário, e após encontrar o valor procurado, na tabela, devemos exibir todos

os outros campos da tabela, por este motivo precisamos de LABELS para exibir o resultado.

Clique 2x no botão Pesquisar e escreva o código abaixo: private void btnPesquisar_Click(object sender, EventArgs e) { con1.carregar_tabela("select * from funcionario where nome='"+txtNomePesq.Text+"'"); if (con1.Tabela_memoria.Rows.Count == 0) { MessageBox.Show("Funcionario não encontrado!!!!"); } else { lblRespNome.Text = con1.Tabela_memoria.Rows[0]["nome"].ToString(); lblRespSalario.Text = con1.Tabela_memoria.Rows[0]["salario"].ToString(); } }

VALOR DE BUSCA

LABELS para exibir o resultado da busca

Botão para executar o comando SELECT (busca)

Page 18: Acessando BD Com C# e Usando MySQL

18 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Observe como fica a variável Tabela_memoria após uma consulta que não foram

encontrados resultados, isto é, o valor informado para a busca não existe na tabela.

Observe agora como fica a variável Tabela_memoria após uma consulta aonde é

encontrado APENAS UM resultado, isto é, o valor informado para a busca existe na tabela.

Sem nenhuma informação, verificando ZERO linha, isto é, quantidade de linha igual a ZERO.

Com uma informação, verificando UMA linha, isto é, quantidade de linha diferente de ZERO.

PORTANTO O COMANDO QUE SERÁ EXECUTADO É O IF ABAIXO

INFORMANDO QUE O VALOR INFORMADO NÃO EXISTE NA TABELA

PORTANTO O COMANDO QUE SERÁ EXECUTADO É O ELSE ABAIXO

EXIBINDO O VALOR ENCONTRADO NOS LABELS.

Page 19: Acessando BD Com C# e Usando MySQL

19 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

ENTENDA O COMANDO :

Observe agora como fica a variável Tabela_memoria após uma consulta aonde são

encontrados VÁRIOS resultados, isto é, o valor informado para a busca existe na tabela.

SOLUÇÃO PARA O PROBLEMA DE VÁRIOS REGISTROS

Exibir e o resultado da busca em LABELS e em um DATAGRIDVIEW, como fazemos

com o cadastro. Observe o código abaixo:

Com várias informações, verificamos VÁRIAS linhas, isto é, quantidade de linha diferente de ZERO. Mas temos um grande problema, como exibir todos os valores se SEMPRE usamos o

comando . E AGORA?

PARA EXIBIR USAMOS O VALOR ENCONTRADO NA LINHA ZERO E O SEU NOME NA TABELA , FORMANDO O COMANDO A CONVERSÃO PARA STRING É OBRIGATÓRIA PARA PODERMOS EXIBIR OS VALORES ENCONTRADOS EM LABELS OU TEXTBOXS.

Page 20: Acessando BD Com C# e Usando MySQL

20 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Observe que usamos o DATAGRIDVIEW do cadastro, somente para exemplificar a

solução.

Page 21: Acessando BD Com C# e Usando MySQL

21 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Excluindo Dados Quando analisamos o processo de exclusão de registros observamos que é necessário

fazer uma pesquisa antes de excluir o registro para verificarmos se a informação encontrada é de

fato a que desejamos excluir.

Altere o FORM, adicionando o botão Excluir, conforme segue abaixo:

Page 22: Acessando BD Com C# e Usando MySQL

22 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Lembre-se que o botão excluir deve se acionado somente depois que

pesquisamos uma informação. Clique 2x no botão Excluir e escreva o código abaixo: private void btnExcluir_Click(object sender, EventArgs e) { DialogResult resp; resp = MessageBox.Show("Deseja excluir este registro?","Excluir!!!",MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (resp == DialogResult.Yes) { con1.carregar_tabela("delete from funcionario where nome='"+txtNomePesq.Text+"'"); MessageBox.Show("Funcionário excluído com sucesso!!!!"); } else { MessageBox.Show("Exclusão cancelada!!!!"); } }

O processo de exclusão deverá seguir os passos:

1. Digite a informação desejada e click no botão Pesquisar, todos os dados referente

a esta informação serão exibidos no labels da pesquisa.

2. Click no botão Excluir, para evitar o erro de excluirmos informações que não

desejamos, adicionamos a caixa de mensagem abaixo:

resp = MessageBox.Show("Deseja excluir este registro?","Excluir!!!",MessageBoxButtons.YesNo, MessageBoxIcon.Question);

3. A resposta do usuário (click no botão) será armazenado na variavel resp. Se a

resposta for SIM a informação será excluída da tabela e caso seja NÃO a

informação não será excluída.

Page 23: Acessando BD Com C# e Usando MySQL

23 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Alterando Dados Idem ao processo de exclusão a alteração de dados também precisa da pesquisa. Portanto

iremos usar o mesmo FORM, mas não podemos esquecer que para alterar informações precisamos

digitar e para isto teremos que usar TEXTBOX para exibir o resultado da Pesquisa ao invés de

LABELS.

Primeiro iremos alterar o FORM, trocando os LABELS por TEXTBOXS e adicionando o

botão Alterar, conforme segue abaixo:

Agora iremos alterar o código do botão Pesquisar que exibia as informações em LABELS

e agora deverá exibir as informações em TEXTBOXS.

Page 24: Acessando BD Com C# e Usando MySQL

24 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Portanto iremos fazer o código do botão Alterar. Clique 2x no botão Alterar e escreva o

código abaixo: private void btnAlterar_Click(object sender, EventArgs e) { con1.carregar_tabela("update funcionario set nome='"+txtNovoNome.Text+"', salario="+txtNovoSalario.Text+" where nome='"+txtNomePesq.Text+"'"); MessageBox.Show("Funcionário alterado com sucesso!!!!"); }

Lembre-se que o botão alterar deve se acionado somente depois que

pesquisamos uma informação.

Page 25: Acessando BD Com C# e Usando MySQL

25 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Trabalhando com Foreign Key

Usando o projeto Exemplo 4TINA para exemplificarmos a processo de cadastro e

pesquisa de FK (Foreign Key) nas tabelas.

O FORM principal tem o layout abaixo:

Observando a FORM e o banco de dados verificamos que os DADOS DO PRODUTO

estão cadastrados na tabela PRODUTO e os DADOS DO VENDEDOR estão cadastrados na tabela

VENDEDOR, caracterizando um FK

Também verificamos que o VALOR A RECEBER do vendedor será calculado

automaticamente através do TOTAL DA VENDA, que também será calculado automaticamente

através da QUANTIDADE COMPRADA * PREÇO UNITÁRIO.

Iremos começar carregando os COMBOBOXS com as respectivas tabelas.

1 - Acione o evento LOAD do FORM e escreva o código abaixo: private void Form1_Load(object sender, EventArgs e) { MessageBox.Show(con1.criar_Conexao()); con1.carregarTabela("select * from produto"); cmbProduto.DataSource = con1.Tabela_memoria; cmbProduto.DisplayMember = "descricao"; cmbProduto.ValueMember = "cod_produto"; con1.carregarTabela("select * from vendedor"); cmbVendedor.DataSource = con1.Tabela_memoria; cmbVendedor.DisplayMember = "nome"; cmbVendedor.ValueMember = "cod_vendedor"; }

Page 26: Acessando BD Com C# e Usando MySQL

26 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Observe que a linha , a que cria a

conexão com o banco, deve ser sempre a primeira linha do evento LOAD do FORM, porque sem

conexão ao banco não conseguimos fazer nada com as tabelas.

Agora vamos entender como funciona o preenchimento dos COMBOBOXS com os

valores que estão nas tabelas.

1. Devemos fazer uma busca de todas as informações da tabela que desejamos exibir no

COMBOBOX, isto é feito com a linha

2. Depois de termos todos os dados carregados iremos atribuir estes valores ao

COMBOBOX, isto é feito com a linha

3. Agora temos um COMBOBOX com todas as informações da TABELA, portanto

devemos escolher qual destes campos (informações) será exibido ao usuário. Lembre-se

que neste momento a informação deve ser o nome do CAMPO da TABELA. Isto é feita

com a linha

4. Como o COMBOBOX está representando um FK, devemos informar qual será a

informação capturado com a seleção do usuário. Neste caso iremos exibir o DESCRICAO

e vamos capturar com a seleção do usuário a COD_PRODUTO. Isto é feito com a linha

2 - Com os COMBOBOX carregados, iremos preencher os campos referentes

automaticamente com a seleção do usuário. Para isto devemos acionar o evento

SELECTEDINDEXCHANGED dos COMBOBOXS.

Para isto click 2x no COMBOBOX do PRODUTO e escreva o código abaixo: private void cmbProduto_SelectedIndexChanged(object sender, EventArgs e) { try { con1.carregarTabela("select * from produto where descricao ='"+cmbProduto.Text+"'"); txtPrecoUnit.Text = con1.Tabela_memoria.Rows[0]["preco"].ToString(); txtQtdEstoque.Text = con1.Tabela_memoria.Rows[0]["qtd_estoque"].ToString(); } catch { } }

Page 27: Acessando BD Com C# e Usando MySQL

27 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

Agora click 2x no COMBOBOX do VENDEDOR e escreva o código abaixo: private void cmbVendedor_SelectedIndexChanged(object sender, EventArgs e) { try { con1.carregarTabela("select * from vendedor where nome ='" + cmbVendedor.Text + "'"); txtComissao.Text = con1.Tabela_memoria.Rows[0]["comissao"].ToString(); } catch { } } Os código acima tem a funcionalidade de ao selecionar um item no COMBOBOX o

outros valores armazenados na tabela sejam exibidos automaticamente.

Lembre-se não é obrigatório exibir todos os valores da tabela, exibimos aquilo que

desejamos, isto é, aquilo que é necessário para que o usuário entenda o software.

3 - Agora iremos calcular o total de venda, para isto acione o evento TEXTCHANGED

do txtQtdComprada, clicando 2x no txtQtdComprada, e escreva o código abaixo: private void txtQtdComprada_TextChanged(object sender, EventArgs e) { if (txtQtdComprada.Text != "") { qtd_comprada = Convert.ToInt32(txtQtdComprada.Text); qtd_estoque = Convert.ToInt32(txtQtdEstoque.Text); preco = Convert.ToInt32(txtPrecoUnit.Text); if (qtd_comprada <= qtd_estoque) { total_venda = preco * qtd_comprada; txtTotalVenda.Text = total_venda.ToString(); } else { MessageBox.Show("Quantidade Insuficiente no Estoque!!!"); } } }

As variáveis usadas neste código foram declaradas como variáveis globais conforme a

figura abaixo:

Page 28: Acessando BD Com C# e Usando MySQL

28 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

4 – Agora iremos calcular a comissão do vendedor. Iremos fazer este calculo em conjunto

com o total da venda, pois para a comissão do vendedor precisamos do total da venda e ela também

deve ser calculada automaticamente.

Clique 2x no txtQtdComprada e altere o código para:

5 – Finalmente iremos fazer o botão cadastrar. No cadastrar iremos cadastrar os dados da

tabela VENDAS e decrementarmos a qtd_estoque da tabela PRODUTO.

Como a tabela VENDAS tem dois FK, os valores cadastrados nestes campos deve ser um

valor INTEIRO e não um TEXTO como é exibido no COMBOBOX, portanto quando tivermos FK

em tabelas e usarmos o COMBOBOX iremos usar o seguinte comando

.

Clique 2x no btnCadastrar e escreva o código abaixo:

Page 29: Acessando BD Com C# e Usando MySQL

29 Acessando BD com C#

usando o MySQL

Profa. Ana Paula Citro Fujarra Rodrigues

private void btnCadastrar_Click(object sender, EventArgs e) { DateTime data_venda; data_venda = Convert.ToDateTime(mskDataCompra.Text); String data; data = data_venda.ToString("yyyy/MM/dd"); if (cmbProduto.Text == "" || cmbVendedor.Text == "" || txtNomeCliente.Text == "" || mskDataCompra.Text == " / /") { MessageBox.Show("Preencha todos os campos!!"); } else { con1.carregarTabela("insert into vendas values('','" + txtNomeCliente.Text + "'," + cmbProduto.SelectedValue + "," + cmbVendedor.SelectedValue+ "," + txtTotalVenda.Text.Replace(',','.') + ",'"+data+"')"); con1.carregarTabela("update produto set qtd_estoque = qtd_estoque -"+txtQtdComprada.Text+" where descricao='"+cmbProduto.Text+"'"); MessageBox.Show("Cadastro efetuado com sucesso!"); } }

Precisamos usar a conversão de datas pois o MYSQL usa o padrão aaaa/mm/dd, sendo

aaaa para o ano com 4 algarismos, mm para o mês com 2 algarismos e dd para o dia com 2

algarismos, e nós usamos o padrão inverso dd/mm/aaaa. O código abaixo é o responsável em fazer

esta conversão. DateTime data_venda; data_venda = Convert.ToDateTime(mskDataCompra.Text); String data; data = data_venda.ToString("yyyy/MM/dd");