Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.72 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement