c Sharp Com Mysql

Download c Sharp Com Mysql

Post on 25-Nov-2015

22 views

Category:

Documents

3 download

Embed Size (px)

TRANSCRIPT

<ul><li><p>1 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> ACESSANDO BD COM C# USANDO O MYSQL </p><p> O Visual Studio pode fazer conexo com muitos gerenciadores de Banco de Dados. Por </p><p>exemplo: Access, SQLServer, MySQL, Oracle, SysBase, entre outros. No nosso caso iremos trabalhar com o MySQl, gerenciador de Banco de Dados gratuito que est disponvel no site www.mysql.com. Para criarmos um programa que armazene, pesquise, exclua e altere informaes em um banco de dados do tipo MySQL, devemos seguir os seguintes passos: </p><p>1. Pegar a DLL de conexo do MySQL 2. Criar o banco de dados com suas tabelas no MySQL 3. Criar o programa no C# </p><p> 1 - PEGAR A DLL DE CONEXO DO MYSQL </p><p> Para usarmos o Gerenciador de Banco de Dados MySQL, vamos precisar de uma biblioteca </p><p>para estabelecer a comunicao. Esta biblioteca tambm disponvel no site www.mysql.com. </p></li><li><p>2 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p></li><li><p>3 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> Salve o arquivo nos Meus Documentos. </p><p>Agora vamos descompactar o arquivo para usarmos o arquivo MySql.Data.dll que est dentro da pasta bin. Este o arquivo responsvel em estabelecer a comunicao entre a programao em C# com o banco de dados em MySQL. Portanto deixe este arquivo sempre dentre da pasta do projeto. </p><p> 2 - CRIAR O BANCO DE DADOS E SUAS TABELAS NO MYSQL </p><p>Abra o prompt de Comando e digite: </p></li><li><p>4 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 3 - CRIAR UM PROGRAMA NO C# </p><p>Agora iremos criar um projeto e adicionaremos a referncia da DLL usando o arquivo MySql.Data.dll. </p><p>Inicialize o VisualStudio 2005 e siga os passos: 1. Passo: Criar um projeto </p><p>Clique no Menu File </p><p>Clique no SubItem New e depois clique em Project </p></li><li><p>5 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 2. Passo: Adicionar a Referncia </p><p>Troque o nome para Cadastrar </p><p>Escolha WINDOWSAPPLICATION </p><p>Escolha um diretrio </p><p>Clique OK</p><p>Abra o Solution Explorer </p><p>Na aba Browse localize o arquivo MySql.Data.dll </p></li><li><p>6 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 3. Passo: Criar uma classe para fazer a conexo com o banco de dados (MySQL). A idia de criar uma classe para reutilizarmos o cdigo de conexo e acesso ao banco de dados e suas tabelas, isto , ao invs de copiarmos e colarmos os cdigos de FORM em FORM. Para criarmos uma classe siga os passos abaixo: 1. Passo: </p><p> A figura abaixo o cdigo da classe criada, lembrem-se classes no possuem FORM, elas so formadas somente por cdigo. </p></li><li><p>7 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 2. Passo: Fazer uso da DLL inserida nas Referencias. </p><p> 3. Passo: Criar as variveis abaixo: </p><p>Observe que esta linha no ficou com o tipo de varivel DataTable em verde, isto significa que est faltando o uso de sua DLL </p></li><li><p>8 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> Antes de arrumarmos o erro do uso da DLL, vamos entender para que serve cada varivel. A varivel conectar ir armazenar todo o caminho da conexo at o banco de dados. Imagine esta varivel como uma ponte que liga o C# ao MySQL, sem esta ponte no temos caminho para trafegar os comandos em SQL. A varivel comando_sql ir armazenar os comandos da linguagem SQL (insert, delete, select, delete), para serem executados pela varivel executar_comando. Imagine este comando como sendo o prompt de comando com o MySQL aberto. A varivel tabela_memoria ir armazenar o resultado da execuo do comando SQL. Estas 4 variveis sempre iram trabalhar em conjunto 4. Passo: Corrigir o erro da DLL do DataTable 5. Passo: Criar os campos Encapsulados das variveis. Observe que usamos antes de cada varivel a palavra . Esta palavra significa que as variveis no estaro disponveis em outro lugar, a no ser dentro deste cdigo. Ento o que iremos fazer, pois precisarei usar este cdigo em outros FORMS. A soluo criar os campos encapsulados, que iram permitir o uso destas variveis em qualquer outro FORM dentro do projeto. Estes campos encapsulados so criados automaticamente pelo Visual Studio. s seguir os passos abaixo para cada varivel. </p></li><li><p>9 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p></li><li><p>10 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> Selecione cada uma das outras 3 variveis e refaa os passos para ter um cdigo semelhante ao cdigo abaixo: </p></li><li><p>11 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 6. Passo: Criar a ponte de conexo ao BD do Mysql Observe o final do seu cdigo para adicionar o mtodo no lugar correto. </p><p> public String criar_Conexao() { // verificando se existe uma conexo, fecha esta conexo 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 no consiga exibe erro de conexo catch (MySqlException erro) { return ("Erro ao conectar " + erro); } // criar um banco em branco na memria 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 ("Conexo OK!!!"); } </p></li><li><p>12 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 7. Passo: Criar o Mtodo acessar tabelas. </p><p> Desa o cdigo e debaixo para cima observe novamente os trs ltimos fecha chaves (}). Entre o segundo e o terceiro o lugar correto para escrevermos este cdigo. 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 </p><p> 5. PASSO: Vamos comear nossa programao de acesso a tabela 1. Passo: Iremos criar uma varivel global, que na verdade um objeto, cpia da classe Conexo. atravs desta varivel que iremos fazer todo o acesso as tabelas do banco de dados. </p><p>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 </p></li><li><p>13 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> 2. Passo: Ativar o evento LOAD do frmTelaPrincipal (FORM) </p><p> 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; } </p></li><li><p>14 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>Cadastrando Dados </p><p>Reviso </p><p> Como foi visto na aula anterior para cadastrar dados em tabelas no MySql preciso saber </p><p>o comando em SQL (INSERT) e escrever o comando, lembrando que: </p><p> Os campos VARCHAR precisam de aspas simples () e os campos INT no precisam destas aspas simples, conforme o exemplo: </p><p> create table alunos ( nome varchar(40), idade int ); </p><p>insert into alunos values (+txtNome.Text+,+txtIdade.Text+) </p><p> Tambm vimos que para cadastrar campos AUTOINCREMENTO necessrio usar as </p><p>aspas simples com nenhum valor dentro, isto , vazia, conforme o exemplo abaixo: </p><p> create table alunos ( cod_aluno int auto_increment, nome varchar(40), idade int, primary key(cod_aluno) ); </p><p>insert into alunos values (,+txtNome.Text+,+txtIdade.Text+) </p></li><li><p>15 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>Cadastrar Campos FLOAT ou DECIMAL </p><p> Para cadastrar campos com casas decimais teremos um problema. Os valores com casas </p><p>decimais so separados por vrgula (,) para os softwares padro Windows e para o MySQL as </p><p>casas decimais devem ser separadas por ponto (.). Ento teremos que usar um comando especfico para fazer esta converso em cada campo </p><p>que houver a necessidade. </p><p> Este comando o Replace(valor original,valor para substituio) e pode ser usado em campo valor String, conforme o exemplo abaixo: </p><p> create table funcionario ( cod_func int auto_increment, nome varchar(40), salario float, primary key(cod_func) ); </p><p>insert into funcionario values (,+txtNome.Text+,+txtSalario.Text.Replace(,,.)+) </p></li><li><p>16 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>Cadastrar Campos NOT NULL </p><p> Para os campos NOT NULL no iremos usar comando SQL, mas sim lgica de </p><p>programao, isto , antes de efetuarmos a linha de comando que faz o insert no banco iremos </p><p>verificar se os TEXTBOX dos campos NOT NULL foram preenchidos pelo usurio, para isso </p><p>iremos usar o comando IF/ELSE. </p><p> Observe o exemplo abaixo: </p><p> Para exemplificar e desmonstrar o cadastro dos campos NOT NULL e FLOAT iremos </p><p>trabalhar com o projeto disponvel no NetStudent com o nome Escola. </p><p>Verifica se os campos NOT NULL (da tabela funcionario) no foram preenchidos, iguais de vazio (== ). Observe que usamos o OR (||), pois o usurio pode ter preenchido um dos dois campos ou nenhum dos dois. Caso o if seja verdadeiro uma mensagem na tela ir aparecer, informando o usurio que os campos devem ser preenchidos, caso contrrio o cadastro ser efetuado. </p></li><li><p>17 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>Pesquisando Dados </p><p> Usando o projeto Escola vamos codificar o boto Pesquisar. </p><p> Lembre-se quando efetuamos uma Pesquisa precisamos de um valor de busca, por </p><p>exemplo Nome do Funcionrio, e aps encontrar o valor procurado, na tabela, devemos exibir todos </p><p>os outros campos da tabela, por este motivo precisamos de LABELS para exibir o resultado. </p><p> Clique 2x no boto Pesquisar e escreva o cdigo 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 no encontrado!!!!"); } else { lblRespNome.Text = con1.Tabela_memoria.Rows[0]["nome"].ToString(); lblRespSalario.Text = con1.Tabela_memoria.Rows[0]["salario"].ToString(); } } </p><p>VALOR DE BUSCA </p><p>LABELS para exibir o resultado da busca </p><p>Boto para executar o comando SELECT (busca) </p></li><li><p>18 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> Observe como fica a varivel Tabela_memoria aps uma consulta que no foram </p><p>encontrados resultados, isto , o valor informado para a busca no existe na tabela. </p><p> Observe agora como fica a varivel Tabela_memoria aps uma consulta aonde </p><p>encontrado APENAS UM resultado, isto , o valor informado para a busca existe na tabela. </p><p>Sem nenhuma informao, verificando ZERO linha, isto , quantidade de linha igual a ZERO. </p><p>Com uma informao, verificando UMA linha, isto , quantidade de linha diferente de ZERO. </p><p>PORTANTO O COMANDO QUE SER EXECUTADO O IF ABAIXO </p><p> INFORMANDO QUE O VALOR INFORMADO NO EXISTE NA TABELA </p><p>PORTANTO O COMANDO QUE SER EXECUTADO O ELSE ABAIXO </p><p> EXIBINDO O VALOR ENCONTRADO NOS LABELS. </p></li><li><p>19 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>ENTENDA O COMANDO : </p><p>Observe agora como fica a varivel Tabela_memoria aps uma consulta aonde so </p><p>encontrados VRIOS resultados, isto , o valor informado para a busca existe na tabela. </p><p> SOLUO PARA O PROBLEMA DE VRIOS REGISTROS </p><p> Exibir e o resultado da busca em LABELS e em um DATAGRIDVIEW, como fazemos </p><p>com o cadastro. Observe o cdigo abaixo: </p><p>Com vrias informaes, verificamos VRIAS linhas, isto , quantidade de linha diferente de ZERO. Mas temos um grande problema, como exibir todos os valores se SEMPRE usamos o </p><p>comando . E AGORA? </p><p>PARA EXIBIR USAMOS O VALOR ENCONTRADO NA LINHA ZERO E O SEU NOME NA TABELA , FORMANDO O COMANDO A CONVERSO PARA STRING OBRIGATRIA PARA PODERMOS EXIBIR OS VALORES ENCONTRADOS EM LABELS OU TEXTBOXS.</p></li><li><p>20 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> Observe que usamos o DATAGRIDVIEW do cadastro, somente para exemplificar a </p><p>soluo. </p></li><li><p>21 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>Excluindo Dados Quando analisamos o processo de excluso de registros observamos que necessrio </p><p>fazer uma pesquisa antes de excluir o registro para verificarmos se a informao encontrada de </p><p>fato a que desejamos excluir. </p><p> Altere o FORM, adicionando o boto Excluir, conforme segue abaixo: </p></li><li><p>22 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p> Lembre-se que o boto excluir deve se acionado somente depois que </p><p>pesquisamos uma informao. Clique 2x no boto Excluir e escreva o cdigo 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("Funcionrio excludo com sucesso!!!!"); } else { MessageBox.Show("Excluso cancelada!!!!"); } } O processo de excluso dever seguir os passos: </p><p>1. Digite a informao desejada e click no boto Pesquisar, todos os dados referente a esta informao sero exibidos no labels da pesquisa. </p><p>2. Click no boto Excluir, para evitar o erro de excluirmos informaes que no </p><p>desejamos, adicionamos a caixa de mensagem abaixo: resp = MessageBox.Show("Deseja excluir este registro?","Excluir!!!",MessageBoxButtons.YesNo, MessageBoxIcon.Question); </p><p>3. A resposta do usurio (click no boto) ser armazenado na variavel resp. Se a resposta for SIM a informao ser excluda da tabela e caso seja NO a </p><p>informao no ser excluda. </p></li><li><p>23 Acessando BD com C# </p><p>usando o MySQL </p><p>Profa. Ana Paula Citro Fujarra Rodrigues </p><p>Alterando Dados Idem ao processo de excluso a alterao de dados tambm precisa da pesquisa. Portanto </p><p>iremos usar o mesmo FORM, mas no podemos esquecer que para alterar informaes precisamos </p><p>digitar e para isto teremos que usar TEXTBOX para exibir o resultado da Pesquisa ao invs de </p><p>LABELS. </p><p> Primeiro iremos alterar o FORM, trocando os LABELS...</p></li></ul>