none
Como passar variáveis para outros formularios RRS feed

  • Pergunta

  • Bom dia a todos.

    Gostaria de saber qual a melhor forma e a mais  recomendadas pelas boas praticas de programação para pegar os resultados de um select jogar nas variáveis e passar para todos os formulários do meu projeto.

    O select é este aqui. 

      bool VerificaLogin()
            {
                bool result = false;
                
                using (SqlConnection con1 = clsdb.AbreBanco())
    
                using (SqlConnection cn = new SqlConnection())
                {
                                   
                    try
                    {
                        SqlCommand cmd = new SqlCommand("select * from usuarios  where nome = '" + txtuser.Text + "' and senha_entrada = '" + txtsenha.Text + "';", con1);
                     
                        SqlDataReader dados = cmd.ExecuteReader();
                        result = dados.HasRows;
                                                             
    
                    }
                    catch (SqlException e)
                    {
                        throw new Exception(e.Message);
                    }
                    finally
                    {
                        con1.Close();
                    }
                }
                return result;
            }
    

     

    sexta-feira, 27 de fevereiro de 2015 11:33

Respostas

  • Bom dia Rafael Firmino

    Muito obrigados pelas as dicas foram muito uteis, resolvi o problema seguindo os padrões que você e o Mr.GMSOFT  me passaram, fiz o encapsulamentos dos campos dentro da classe usando o public static, esse método eu já utilizava muito em java e não sabia que poderia ser utilizado da mesma forma em C# pois estou imigrado de uma linguagem para outra estou gostando muito.

    Um grande abraço  e sucesso pra todos nós.

     

    • Marcado como Resposta Renato B Lima segunda-feira, 2 de março de 2015 13:23
    segunda-feira, 2 de março de 2015 13:23
  • Renato, já ouviu falar sobre padrões de projeto?
    Pois bem, uma forma de você resolver o seu problema é utilizar o padrão Singleton (tente não pegar a singletonia, ou seja a doença de achar que singleton resolve tudo)

    Lembrando que existe n formas de se resolver um mesmo problema.

    Outra coisa, em relação a resposta do MR.GMSOFT, acho que você deveria sim utilizar uma forma melhor de fazer a implementação das suas consultas, leia um pouco sobre SOLID. 

    Olha está descução no stackoverflow.

    Qualquer coisa fique a vontade para entrar em contato 

    "A primeira regra de funções é que elas devem ser pequenas. A segunda regra de funções é que elas devem ser ainda menores" Robert C. Martin



    sexta-feira, 27 de fevereiro de 2015 18:21

Todas as Respostas

  • Passar para todos os formulários?
    Minha recomendação é que você crie uma classe com todos os métodos básicos (INSERT,UPDATE,DELETE) e faça a utilização conforme necessidade em cada parte de seu programa.
    sexta-feira, 27 de fevereiro de 2015 11:39
  • Isso Mr. GMSOFT

    Eu tenho que verificar as mudanças que o usuário  esta fazendo no programa, por exemplo ele entrou no cadastro de cliente e altero os dados, ai no caso grava o id do usuário e a data da alteração na tabela cliente.

    O código inteiro do formulário de login:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    
    {
        public partial class FormLogin : Form
        {
    
    
            private bool Logado = false;
            public bool LOGADO = false;
            public string usuario;
            
    
            public FormLogin(String texto)
            {
                InitializeComponent();
              
               
            }
    
    
            bool VerificaLogin()
            {
                bool result = false;
                
                using (SqlConnection con1 = clsdb.AbreBanco())
    
                using (SqlConnection cn = new SqlConnection())
                {
                                   
                    try
                    {
                        SqlCommand cmd = new SqlCommand("select * from usuarios  where nome = '" + txtuser.Text + "' and senha_entrada = '" + txtsenha.Text + "';", con1);
                     
                        SqlDataReader dados = cmd.ExecuteReader();
                        result = dados.HasRows;
                                                             
    
                    }
                    catch (SqlException e)
                    {
                        throw new Exception(e.Message);
                    }
                    finally
                    {
                        con1.Close();
                    }
                }
                return result;
            }
    
    
    
    
    
    
    
            private void FormLogin_Load(object sender, EventArgs e)
            {
    
            }
    
            private void btnEntrar_Click(object sender, EventArgs e)
            {
                bool result = VerificaLogin();
    
                Logado = result;
                
    
                if (result)
                {
    
                    FormPrincipal abrir_principal = new FormPrincipal();
                    abrir_principal.Show();
    
                }
    
    
                else
                {
                    MessageBox.Show("Usuário ou senha incorreto!");
                }
    
                this.DialogResult = DialogResult.OK;
                this.Close();
    
            }
    
            private void FormLogin_FormClosed(object sender, FormClosedEventArgs e)
            {
                /*if (Logado)
                {
                    this.Close();
                }
                else
                {
                    Application.Exit();
                }
                */
    
    
            }
    
            private void btnsai_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            private void txtsenha_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    bool result = VerificaLogin();
    
                    Logado = result;
    
                    if (result)
                    {
                        FormPrincipal abrir_principal = new FormPrincipal();
                        abrir_principal.Show();
                    }
    
                    else
                    {
                        MessageBox.Show("Usuário ou senha incorreto!");
                    }
    
                    this.DialogResult = DialogResult.OK;
                    this.Close();
    
                }
            }
        }
    }
    

      
    sexta-feira, 27 de fevereiro de 2015 12:09
  • Renato, já ouviu falar sobre padrões de projeto?
    Pois bem, uma forma de você resolver o seu problema é utilizar o padrão Singleton (tente não pegar a singletonia, ou seja a doença de achar que singleton resolve tudo)

    Lembrando que existe n formas de se resolver um mesmo problema.

    Outra coisa, em relação a resposta do MR.GMSOFT, acho que você deveria sim utilizar uma forma melhor de fazer a implementação das suas consultas, leia um pouco sobre SOLID. 

    Olha está descução no stackoverflow.

    Qualquer coisa fique a vontade para entrar em contato 

    "A primeira regra de funções é que elas devem ser pequenas. A segunda regra de funções é que elas devem ser ainda menores" Robert C. Martin



    sexta-feira, 27 de fevereiro de 2015 18:21
  • Bom dia Rafael Firmino

    Muito obrigados pelas as dicas foram muito uteis, resolvi o problema seguindo os padrões que você e o Mr.GMSOFT  me passaram, fiz o encapsulamentos dos campos dentro da classe usando o public static, esse método eu já utilizava muito em java e não sabia que poderia ser utilizado da mesma forma em C# pois estou imigrado de uma linguagem para outra estou gostando muito.

    Um grande abraço  e sucesso pra todos nós.

     

    • Marcado como Resposta Renato B Lima segunda-feira, 2 de março de 2015 13:23
    segunda-feira, 2 de março de 2015 13:23