none
Manter conexão com SQL aberta RRS feed

  • Pergunta

  • Bom dia,

    Galera preciso de uma ajuda, possuo uma aplicação que ao abrir pede informações de login essas informações são validadas junto ao SQL Server.

    Apos a validaçao inicia a form inicial da aplicação, através de uma conexão.

    Gostaria de saber como manter essa conexão e utiliza-la para outros metodos, exemplo um insert ou delete, ou seja não ter que criar uma nova conexão com o banco.

    Obs: a conexão estou deixando aberta e ao encerrar a aplicação ele fecha.

    Grato
    terça-feira, 23 de fevereiro de 2010 13:15

Respostas

  • Bom dia, Anderson
    Geralmente na minha camada DAL eu utilizo

    namespace manager.dal // Camada de Acesso
    {
        public sealed class con //Classe Publica Selada para conexão a base de dados
        {
            /// <summary>
            /// Metodo de acesso a dados Base
            /// </summary>
            /// <returns> Classe SqlConnection  </returns>        
            public static SqlConnection getCon() 
            {
                //Criar objeto e Instanciar a conexão com a string que está no web.Config
                SqlConnection tmpcon = new SqlConnection("minhaconexao");            
                tmpcon.Open();            
                return tmpcon;
            }
    
        }
    
    
    }

    Américo Arvani MCP/MCTS - WEB Se ajudou , marque como resposta.
    terça-feira, 23 de fevereiro de 2010 13:36
  • OLá , Anderson

    Por que Sealed?
    Porque ela não pode ser herdada por nenhuma outra classe.

    Como compartilhar a conexão para outros médotos?
    No método da classe você herda a instancia da classe de conexão exemplo:

    using (SqlConnection con = Dados.CON.getCon())
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.Connection = con;
                        cmd.CommandText = SQLNomProc;
    
                        if (tipCons == false)
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
    
                            int contar = 0;
    
                            while (contar <= Parametros.Count - 1)
                            {
                                cmd.Parameters.AddWithValue(Parametros[contar].ToString(), Parametros[contar].Value);
                                contar++;
                            }
    
                        }
                        else
                        {
                            cmd.CommandType = CommandType.Text;
                        }
    
    
                        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                        {
                            da.Fill(dt);
                            return dt;
                        }
    
                    }
                }




    Américo Arvani MCP/MCTS - WEB Se ajudou , marque como resposta.
    quarta-feira, 24 de fevereiro de 2010 11:25

Todas as Respostas

  • Bom dia, Anderson
    Geralmente na minha camada DAL eu utilizo

    namespace manager.dal // Camada de Acesso
    {
        public sealed class con //Classe Publica Selada para conexão a base de dados
        {
            /// <summary>
            /// Metodo de acesso a dados Base
            /// </summary>
            /// <returns> Classe SqlConnection  </returns>        
            public static SqlConnection getCon() 
            {
                //Criar objeto e Instanciar a conexão com a string que está no web.Config
                SqlConnection tmpcon = new SqlConnection("minhaconexao");            
                tmpcon.Open();            
                return tmpcon;
            }
    
        }
    
    
    }

    Américo Arvani MCP/MCTS - WEB Se ajudou , marque como resposta.
    terça-feira, 23 de fevereiro de 2010 13:36
  • Americo, obrigado pela resposta.

    Mas dois pontos que não entendi sua classe como  public sealed?

    Eu tambem uso na minha classe de DAL a forma de conexão que me falou acima, porém o que eu não sei é, ao inves de criar uma conexão para cada metodo usar apenas uma.

    Como eu  posso compartilhar a conexão de um metodo da classe para outros?

    Abraço
    quarta-feira, 24 de fevereiro de 2010 00:38
  • OLá , Anderson

    Por que Sealed?
    Porque ela não pode ser herdada por nenhuma outra classe.

    Como compartilhar a conexão para outros médotos?
    No método da classe você herda a instancia da classe de conexão exemplo:

    using (SqlConnection con = Dados.CON.getCon())
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.Connection = con;
                        cmd.CommandText = SQLNomProc;
    
                        if (tipCons == false)
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
    
                            int contar = 0;
    
                            while (contar <= Parametros.Count - 1)
                            {
                                cmd.Parameters.AddWithValue(Parametros[contar].ToString(), Parametros[contar].Value);
                                contar++;
                            }
    
                        }
                        else
                        {
                            cmd.CommandType = CommandType.Text;
                        }
    
    
                        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                        {
                            da.Fill(dt);
                            return dt;
                        }
    
                    }
                }




    Américo Arvani MCP/MCTS - WEB Se ajudou , marque como resposta.
    quarta-feira, 24 de fevereiro de 2010 11:25