SHARE
TWEET

Untitled

a guest Jun 25th, 2019 80 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using Projeto3Camadas.Code.BLL;
  2.      
  3. private void frmCadastroCliente_Load(object sender, EventArgs e)
  4.     {
  5.         CarregarGrid();
  6.     }
  7.  
  8.     //EVENTO INSERIR E ATUALIZAR
  9.     private void btnGravar_Click(object sender, EventArgs e)
  10.     {
  11.         //LOGICA QUE SE O ID DO CLIENTE FOR VAZIA, EFETUA A OPERAÇÃO DE INSERIR, SE NÃO EFETUA A AÇÃO DE ATUALIZAR
  12.         dto.Nome = txtNome.Text;
  13.         dto.Email = txtEmail.Text;
  14.  
  15.         if (txtId.Text == "")
  16.         {
  17.             bll.Inserir(dto);
  18.         }
  19.         else
  20.         {
  21.             dto.Id = int.Parse(txtId.Text);
  22.             bll.Atualizar(dto);
  23.         }
  24.  
  25.         CarregarGrid();
  26.     }
  27.  
  28.     //CRIANDO UM METODO ESPESSIFICO PARA CARREGAR O GRID
  29.     private void CarregarGrid()
  30.     {
  31.         gridClientes.DataSource = bll.SelecionarTodosClientes();
  32.     }
  33.  
  34.     //AO CLICAR EM UM DETERMINADO CLIENTE, ELE VAI SELECIONAR E MOSTRAR NOS CAMPOS NA POSIÇÃO INDICADA:
  35.     private void gridClientes_CellContentClick(object sender, DataGridViewCellEventArgs e)
  36.     {
  37.         txtId.Text = gridClientes.Rows[e.RowIndex].Cells[0].Value.ToString();
  38.         txtNome.Text = gridClientes.Rows[e.RowIndex].Cells[1].Value.ToString();
  39.         txtEmail.Text = gridClientes.Rows[e.RowIndex].Cells[2].Value.ToString();
  40.     }
  41. }
  42.      
  43. using System;
  44.      
  45. //Dados da conexao
  46.     private string server = "localhost";
  47.     private string user = "root";
  48.     private string password = "";
  49.     private string database = "dbclientes";
  50.  
  51.     //CONECTAR
  52.     public void Conectar()
  53.     {
  54.         //Se a conexao estiver aberta, eu fecho ela antes de abrir uma nova conexão
  55.         if (conn != null)
  56.         {
  57.             conn.Close();
  58.         }
  59.         //Guarda os dados da string de conexao
  60.         string connStr = $"server = {server}; user = {user}; password = {password}; database = {database}; pooling = false";
  61.         //string connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false", server, user, password, database);
  62.  
  63.         //Tratamento de exceção
  64.         try
  65.         {
  66.             //Concretiza o objeto conn para conexao e passa por parametro a string de conexao connStr
  67.             conn = new MySqlConnection(connStr);
  68.             conn.Open();
  69.         }
  70.         catch (MySqlException ex)
  71.         {
  72.  
  73.             throw new Exception(ex.Message);
  74.         }
  75.     }      
  76.  
  77.     //EXECUTAR COMANDO SQL
  78.     public void ExecutarcomandoSql(string comandoSql)
  79.     {
  80.         //Executa o comando passando por parametro a string digitada no comando sql
  81.         MySqlCommand comando = new MySqlCommand(comandoSql, conn);
  82.         comando.ExecuteNonQuery();
  83.         conn.Close();
  84.     }
  85.  
  86.     //EXECUTAR LEITURA PREENCHE A TABALE E RETORNAR
  87.     public DataTable RetDataTable(string sql)
  88.     {
  89.         //Retorno de um objeto Aqui so pode comando select
  90.         //Concretisa o objeto data e da, em da é passado o sql e a conexao
  91.         data = new DataTable();
  92.         da = new MySqlDataAdapter(sql, conn);
  93.         //Preenche o objeto "da" com os daddos que estao no datatable "data"
  94.         da.Fill(data);
  95.         //Retorna o objeto "data" já preenchido
  96.         return data;
  97.     }
  98.  
  99.     //EXECUTAR E RETORNAR OS DADOS SELECIONADOS
  100.     public MySqlDataReader RetDataReader(string sql)
  101.     {
  102.         //Retorna o objeto "MySqlDataReader" dado de um comando SELCET
  103.         //concretisa a criação do objeto "comando"
  104.         MySqlCommand comando = new MySqlCommand(sql, conn);
  105.         //Objeto comando criado, basta executa-lo de modeo que ele retorne um objeto do tipo MySqlDataReader
  106.         MySqlDataReader dr = comando.ExecuteReader();
  107.         //Retorna o objeto dr ja preenchido
  108.         return dr;
  109.     }
  110. }
  111.      
  112. using System;
  113.      
  114. public int Id { get => id; set => id = value; }
  115.     public string Nome { get => nome; set => nome = value; }
  116.     public string Email { get => email; set => email = value; }
  117. }
  118.      
  119. using Projeto3Camadas.Code.DTO;
  120.      
  121. AcessoBancoDados bd = new AcessoBancoDados();
  122.  
  123.     public void Inserir(ClienteDTO dto)
  124.     {
  125.         //tratamento de erro para passar uma mensagem elegante para o usuario de modo que ele tenha ao menos a possibilidade de tentar resolver o erro ou ate mesmo ajudar o suporte a desvendafr o possivel errro
  126.         try
  127.         {
  128.             //Tratando de um possivel erro do usuario passar um nome com o uso de uma apostrofe ' pois o banco de dados pode confundir
  129.             string nome = dto.Nome.Replace("'", "''");
  130.             //concretizando a instanciação do objeto, pois esse processo e matado no finally, sendo assim ao cadastrar dois usuarios ou mais simultaneamente, enfrentariamos um erro de objeto nao encontrado ou nao instanciado
  131.             bd = new AcessoBancoDados();
  132.             bd.Conectar();
  133.             string comando = "INSERT INTO cliente(nome, email) VALUES('" + nome + "', '" + dto.Email + "')";
  134.             bd.ExecutarcomandoSql(comando);
  135.         }
  136.         catch (Exception ex)//essa variavel recebe detalhes do erro
  137.         {
  138.             //nesse caso irá aparecer para o usuario um mensagem mais elegante e descritiva sobre o erro, seguida dos detalhes tecnicos.
  139.             throw new Exception( "Erro ao tentar inserir um usuario: DECRIÇÃO DO ERRO => " + ex.Message);
  140.         }
  141.         //Esse bloco sempre sera executado, dando ou nao dando erro.
  142.         finally
  143.         {
  144.             //nesse caso e bem espessifico o seu uso, pois vai depender de cada aplicão, nesse caso estamos matando o processo do objeto db
  145.             //um detalhe e que ao inserir um novo usuario de forma simuntanea, enfrentaremos um novo erro, pois o objeto bd nao esta instanciado.
  146.             //SOLUÇÃO   - INSTANCIAR DENTRO DO BLOCO CACTH CONCRETIZANDO
  147.             bd = null;
  148.         }
  149.     }
  150.  
  151.     public void Atualizar(ClienteDTO dto)
  152.     {
  153.         try
  154.         {
  155.             string nome = dto.Nome.Replace("'", "''");
  156.             bd = new AcessoBancoDados();
  157.             bd.Conectar();
  158.             string comando = "UPDATE cliente SET nome = '" + dto.Nome + "', SET email = '" + dto.Email + "' WHERE id = " + dto.Id;
  159.             bd.ExecutarcomandoSql(comando);
  160.         }
  161.         catch (MySqlException ex)
  162.         {
  163.             throw new Exception("Erro ao tentar gravar usuario na banco de dados. DETALHES TECNICOS => " + ex.Message);
  164.         }
  165.         finally
  166.         {
  167.             bd = null;
  168.         }
  169.     }
  170.     public DataTable SelecionarTodosClientes()
  171.     {
  172.         DataTable dt = new DataTable();
  173.         try
  174.         {
  175.             bd = new AcessoBancoDados();
  176.  
  177.             bd.Conectar();
  178.             dt = bd.RetDataTable("SELECT * FROM cliente ORDER BY id DESC");
  179.         }
  180.         catch (Exception ex )
  181.         {
  182.  
  183.             throw new Exception("Ero ao selecionar os usuarios no banco de dados. DETALHES TECNICO DO ERRO:" + ex.Message);
  184.         }
  185.         finally
  186.         {
  187.  
  188.         }
  189.         return dt;
  190.     }
  191.  
  192. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top