c# - gerenciamento de banco de dados mysql - parte 01

18
imasters.com.br  >  Portal  Fór uns 7Mas ter s Revis ta iMas ter s Cons ult ing Curs os online Agenda  Eventos:  PHP Experienc e Int erCon Developer Week BH DevCommer ce C# – Gerenciamento de banco de dados MySQL – Parte 01 José Carlos Macoratti  em .NET  Neste artigo eu vou mostrar como gerenciar um banco de dados MySQL efetuando as operações de acesso, seleção, inclusão, alteração e exclusão usando a linguagem C# e ADO .NET.  Vamos traba lhar usand o a ar quitet ura em 3 camadas definindo assim:  Vamos também criar a enti dade Produto que será o objeto do nosso negócio e que possuirá 3 propriedades: ID, Nome e Preco representando assim cada coluna da tabela Estoque. A entidade terá o namespace DTO e a classe Produto.  /DE SEN VOLV IMENTO  mercadolivre  ... ... 0 ...  A camad a de interface : UI – namespace UI  A camad a de negócios : BL L – namespace BLL e classe produtoBLL  A camad a de acesso a dad os : DAL – namespace DAL e classe produtoDAL  Compartilhar   Tweetar   Google +    Linkedin /DE SI GN /DESENVOLVI M EN TO /BANCO DE DADOS /MKT DIGITAL /INFRA    

Upload: campo486

Post on 09-Jan-2016

24 views

Category:

Documents


0 download

DESCRIPTION

Gerenciamento de Banco de Dados

TRANSCRIPT

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 1/18

imasters.com.br > Portal Fóruns 7Masters Revista iMasters Consulting Cursos online Agenda Eventos: PHP Experience InterCon Developer Week BH DevCommerce

C# – Gerenciamento de bancode dados MySQL – Parte 01

José Carlos Macoratti em .NET

Neste artigo eu vou mostrar como gerenciar um banco de dados MySQL

efetuando as

operações de acesso, seleção, inclusão, alteração e

exclusão usando a linguagem C# e ADO .NET.

Vamos trabalhar usando a arquitetura

em 3 camadas definindo assim:

Vamos também criar a entidade

Produto que será o objeto do nosso negócio e que possuirá 3

propriedades: ID, Nome e Preco representando assim cada coluna da

tabela Estoque. A entidade terá o namespace DTO e a

classe Produto.

/DESENVOLVIMENTO

mercadolivre

... ... 0 ...

A camada de interface : UI –namespace UI

A camada de negócios : BLL –namespace BLL e classe produtoBLL

A camada de acesso a dados :DAL – namespace DAL e classe produtoDAL

Compartilhar Tweetar Google + Linkedin

/DESIGN /DESENVOLVIMENTO /BANCO DE DADOS /MKT DIGITAL / INFRA

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 2/18

Eu poderia criar 3 projetos

distintos, mas para simplificar vou criar as seguintes classes :

Lembrando que em uma aplicação em

3 camadas temos uma hierarquia de chamadas onde:

A UI chama a BLL que chama a

DLL que, por sua vez, acessa os dados e retorna os

objetos;

Nunca deverá haver uma chamada

direta da UI para a DAL e vice-versa.(Quando usamos os

controles de acesso a dados vinculados no formulário, estamos

fazendo o acesso direto da camada de interface para a DAL ou

banco de dados, o que não é uma boa prática.)

As ferramentas usadas são:

produtoBLL – contém os métodos dasregras de negócio; (namespace BLL)

produtoDAL – contém os métodos paraacesso a dados no MySQL; (namespace DAL)

produto – contém a classe Produto;(namespace DTO)

UI – representa a nossaaplicação Windows Forms;

Banco de dados MySQL 5.01;http://dev.mysql.com/downloads/mysql/5.1.html

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 3/18

Se você não possuir o MySQL e o Connector .NET para

o MySQL, deverá efetuar o dowload e instalar. A instalação é simples –

basta clicar

no pacote e seguir as orientações aceitando as configurações padrão.

Veja a

seguir a sequência de telas principais da instalação:

1-tela inicial de instalação do MySQL

2-Selecione a opção Typical para instalação

3-Verifique o local onde os arquivos serão instalados

MySQL Administrator e MySQLQuery Browse – http://dev.mysql.com/downloads/gui-tools/5.0.html;

MySQl Connector .NET 6.04;http://dev.mysql.com/downloads/connector/

SharpDevelop 3.0 ou Visual

Studio C# 2008; http://www.icsharpcode.net/OpenSource/SD/Download/ ou http://www.microsoft.com/express/vcsharp/

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 4/18

4-Marque a opção para configurar o MySQL

5-Marque a opção Standard Configuration

6-Marque a opção para instalar como um serviço e forneça um nome

para o serviço. O nome padrão é MySQL

7-Informe uma senha ao usuário root

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 5/18

8-Clique no botão Execute para processar as opções definidas

Com os componentes instalados, vamos

efetuar as seguintes tarefas:

Embora eu já tenha descrito como

criar um banco de dados no MySQL usando MySQL Administrator vouresumidamente repetir os passos:

Criar um banco de dados noMySQL Chamado Cadastro e uma tabela

chamada Estoque com os campos ID,

Nome e Preco;

Criar um novo projeto WindowsForms no Visual C# 2008 Express ou SharpDevelop;

Abra o MySQL Admininistrator,e, na área inferior esquerda, onde são exibidos osesquemas. clique com o botão direito e selecione aopção: Create New Schema;

Na janela Create new Schema informe o nome do banco de dados, no

nosso caso,Cadastro, e tecle OK;

Clique sobre o esquema criado eselecione a opção Create New Table ou clique no botão

Create Table;

A seguir defina o nome databela como Estoque e defina os campos da mesma conformea figura abaixo:

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 6/18

Neste momento já temos o banco de

dados Cadastro e a tabela Estoque com dois registros.

Abra o SharpDevelop ou o Visual C#

2008 Express e crie um novo projeto do tipo Windows Applicationcom o nome MySQL_C#;

A seguir, a partir do menu Tools,selecione a opção MySQL Query Browse;

Na janela do MySQL Query Browsedigite a instrução INSERT INTO Estoque VALUES(‘,”Caderno”, 1.23) e clique no botão Executepara incluir um registro na tabela. Repita a operação einclua uma borracha com um valor de forma que, ao efetuaruma instrução SELECT * FROM Estoque, iremos obter oresultado abaixo:

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 7/18

Devemos incluir a referência ao

Connector .NET para ter acesso às classes de acesso a dados do

MySQL. Para isso clique sobre o nome do projeto e selecione a

opção Add Reference;

A seguir inclua uma referência adll do MySQL Connector .NET selecionando na pasta onde foi

instalada e clicando no botão Abrir/Open;

No formulário padrão inclua um

controle TabControl e defina dois TabPages:

TabPage1 – Text = Cadastro

TabPage2 – Text = Lista

tabControl1 – Appearence = FlatButtons(para obter a aparência conforme a figura abaixo)

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 8/18

Na primeira TabPage inclua os

seguintes controles:

Na segunda TabPage inclua um

controle DataGridView – gdvProdutos.

Acima vemos o leiaute do formulário

para cada TabPage.

Vamos iniciar criando o arquivo de

classe Produto.cs que irá representar a classe Produto, clicando

no nome do projeto e selecionando a opção Add New Item;

Na janela de templates selecione o

template Class e informe o nome Produto.cs;

A seguir defina o seguinte código nesta classe onde

estamos definindo 3 membros e 3 propriedades da nossa entidade

Produto:

using System;

3 controles Label

3 Controles TextBox :txtID,txtNome e txtPreco

5 controles Button : btnNovo,btnAltear, btnExcluir, btnExibir e btnProcurar

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 9/18

namespace DTO

public class Produto

int _id; String _nome; Decimal _preco;

public int ID get return _id; set _id = value; public String Nome

get return _nome;

set _nome = value; public Decimal Preco get return _preco; set _preco = value; Neste arquivo criamos a classe

Produto e definimos os membros _id, _nome e _preco e as

propriedades ID, Nome e Preco. Ela será usada para

transferência de objetos entre as camadas de interface de

negócio e de acesso a dados.

Agora vamos criar o arquivo de

classe DAL.cs clicando no nome do projeto e selecionando aopção Add New Item;

Na janela de templates selecione o

template Class e informe o nome DAL.cs;

Os pacotes usados nesta classe

são:

using System;

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 10/18

using System.Collections.Generic;

using System.Data;

using MySql.Data.MySqlClient;

using DTO;

A seguir vamos definir na classeprodutoDAL 6 métodos conforme exibidos abaixo:

Vejamos o código da classe produtoDAL:

Declaramos duas variáveis que serão visíveis na

classe:

selectListProdutos – retornauma lista de produtos : List<Produto> com osprodutos selecionados;

selectProdutos – retorna umDataTable com os produtos selecionados;

selectProdutosByID – retornauma entidade Produto para um produto selecionado pelo seucódigo (id);

insertProduto – inclui um novoproduto;

updateProduto – atualiza umproduto existente;

deleteProduto – exclui umproduto existente;

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 11/18

String

_conexaoMySQL = “”;

MySqlConnection con = null;

O construtor da classe ProdutoDAL define a

string de conexão com o banco de dados MySQL:

public produtoDAL()

_conexaoMySQL ="server=localhost;user id=root;password=password;database=ca

onde temos:

server – localhost, pois estou acessando o

MySQL instalado na minha máquina local;

id = root, pois estou usando o usuário root;

password = password, pois essa foi a senha definida para o usuário root;

database=cadastro, pois esse é o banco de dados que criamos noMySQL;

Agora vejamos os métodos:

1- SelectProdutos – Usada para exibir todos

os produtos do estoque;

public DataTable selectProdutos()try String sql = "SELECT * FROM Estoque"; con = new MySqlConnection(_conexaoMySQL); MySqlCommand cmd = new MySqlCommand(sql,con); MySqlDataAdapter da = new MySqlDataAdapter(); da.SelectCommand = cmd; DataTable dt = new DataTable(); da.Fill(dt); return dt; catch (Exception ex)

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 12/18

throw ex;2- selecteProdutoByID() – Usada para

retornar uma entidade Produto representando um único produto pelo seu

código (id);

public ProdutoselectProdutoByID(int id)

try

String sql = "SELECT * FROM Estoque WHERE id = @id";

con = new MySqlConnection(_conexaoMySQL);

MySqlCommand cmd = new MySqlCommand(sql,con);

cmd.Parameters.AddWithValue("@id",id);

con.Open();

MySqlDataReader dr;

Produto produto = new Produto();

dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (dr.Read())

produto.ID = Convert.ToInt32(dr["id"]);

produto.Nome = dr["Nome"].ToString();

produto.Preco = Convert.ToDecimal(dr["Preco"]);

return produto;

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 13/18

catch (Exception ex)

throw ex;

3- selectListProdutos() – Usada para

retornar uma lista de objetos Produto representando uma coleção de

produtos.

public List<Produto> selectListProdutos() try using (MySqlConnection conn = new MySqlConnection(_conex using (MySqlCommand command = new MySqlCommand(" conn.Open(); List<Produto> listaProdutos = new List<Produto>(); using (MySqlDataReader dr = command.ExecuteReader(

while (dr.Read()) Produto produto = new Produto(); produto.ID = (int)dr["id"]; produto.Nome = (String) dr["Nome"]; produto.Preco = Convert.ToDecimal(dr["Preco"]); listaProdutos.Add(produto); return listaProdutos; catch (Exception ex) throw new Exception("Erro ao acessar estoque " + ex.Messag 4- insertProduto() – Usada para incluir um

novo produto no estoque;

public void insertProduto(Produto produto)try

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 14/18

String sql = "INSERT INTO Estoque (nome,preco) VALUES (@ con = new MySqlConnection(_conexaoMySQL); MySqlCommand cmd = new MySqlCommand(sql,con); cmd.Parameters.AddWithValue("@nome",produto.Nome); cmd.Parameters.AddWithValue("@preco",produto.Preco); con.Open();cmd.ExecuteNonQuery();

catch (Exception ex) throw ex; finally con.Close(); 5- updateProduto() – Usada para atualizar os

dados de um produto no estoque;

public void updateProduto(Produto produto)try String sql = "UPDATE Estoque SET nome= @nome ,preco=@ con = new MySqlConnection(_conexaoMySQL); MySqlCommand cmd = new MySqlCommand(sql,con);

cmd.Parameters.AddWithValue("@id",produto.ID); cmd.Parameters.AddWithValue("@nome",produto.Nome); cmd.Parameters.AddWithValue("@preco",produto.Preco); con.Open();cmd.ExecuteNonQuery(); catch (Exception ex) throw ex;

finally con.Close(); 6- deleteProduto() – Usada para excluir um

produto no estoque;

public void deleteProduto(Produto produto)try String sql = "DELETE FROM Estoque WHERE id = @id "; MySqlConnection con = new MySqlConnection(_conexaoMyS

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 15/18

MySqlCommand cmd = new MySqlCommand(sql,con); cmd.Parameters.AddWithValue("@id",produto.ID); con.Open();cmd.ExecuteNonQuery(); catch (Exception ex)

throw ex; finally con.Close(); Eu mantive o código o mais simples possível usando

ado .net clássica e instruções SQL. Poderia ter usado stored procedures,

o queseria mais indicado.

Esta é a nossa camada de acesso a dados e sua

responsabilidade é acesssar e persistir dados no MySQL, só isso. Veja

abaixo uma

figura onde temos uma visão da nossa solução:

Aguarde no próximo artigo a continuação onde irei

criar a camada de negócios – BLL:

C#

– Gerenciamento de banco de dados MySQL – Parte 02.

Eu sei, é apenas Visual C#, mas eu gosto…

Mensagem do anunciante:

NEWSLETTERFique por dentro de todas as novidades, eventos,cursos e muito mais

seu nome

X

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 16/18

A Mundipagg lanç a a i nova dora API e m REST, garan tind o fle xibi lida de e simp lici dade na integ ração . Conheça as nossasfuncionalidades.

q u i n t a - f e i r a , 1 7 d e s e t e m b r o d e 2 0 0 9

José Carlos Macoratti

é referência em Visual Basic no Brasil e autor dos livros "Aprenda Rápido: ASP" e"ASP, ADO e Banco de Dados na Internet". Mantenedor do site macoratti.net.

Interoperabilidade naprática - Parte 01

Diego Pacheco em .NET

... ... 0 ...

leia agora

6 comentários COMENTE TAMBÉM

ótimo artigo! Quando virá a parte 2?

Responder Patrícia Souza17 de setembro

de 2009 às15:30

Compartilhar Tweetar Google + Linkedin

seu e-mail

ENVIAR

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 17/18

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Nome

E-mail

um × = 6

Comente

Não manjo nada de .net e C# mas estou tentando aprender,

segui todos os passos deste artigo e nada funciona, nem

compila!!!não gostei!!!

Responder

10 de abril de2010 às 11:40

1 de maio de 2011 às 18:26

Pois é, nota-se que você não entende nada de .NET.

César

Reparei que apenas na criação da list vc usou o artificio

“using”

e não separou a string SQL.

vc pegou essa parte pronta ? ou apenas esqueceu de

organizar como as outras ?

ótimo tuto !

Responder

25 de junho de2010 às 14:40

Não poderia fazer um tutorial exemplificando este CRUD com

c# + MySQL mas em visual studio?

Obrigado.

Abraço!

Responder

AndreLC14 de agostode 2011 às

21:49

Como eu coloco as configurações do banco de dados como

ip, porta, db, user, senha em um outro arquivo deconfiguração por exemplo em um arquivo .ini o usuario vai la

e altera as configurações do servidor.

Responder

jose lui z21 de janeiro

de 2012 às14:50

7/17/2019 C# - Gerenciamento de Banco de Dados MySQL - Parte 01

http://slidepdf.com/reader/full/c-gerenciamento-de-banco-de-dados-mysql-parte-01 18/18

ENVIAR COMENTÁRIO

Desenvolvimento

Agile

Ajax

Análise de DadosCakePHP

CSS

Front End

HTML

Java

JavaScript

PHP

Python

Ruby

Design

3ds max

Acessibil idade

Arquit etur a d eInformação

Design Responsivo

Games

Usabilidade

User Experience

Banco de dados

Interbase

MongoDB

MySQLOracle

PostgreSQL

SQL Server

Infra e Cloud

Cloud Computing

Linux

Microsoft Azure

Segurança

Site Blindado

Marketing Digital

Conteúdo Digital

E-commerce

E-mail MarketingMercado

Publicidade Online

Redes Sociais

Tendências

Mobile

Androi d

iPhone & iPad

Agenda

Fórum

7Masters

Cursos Online

InterCon

Revista iMasters

Sobre o iMasters Política de Privacidade Fale conosco iMasters Expert (english blog)

Este projeto é mantido e patrocinado pelas empresas:

Hospedado por: