Ir para conteúdo
Fórum Script Brasil
  • 0

Migrando para Class


alexandremanowar

Pergunta

E a e pessoal beleza!

Bom continuando os estudos, eu gostaria de saber o seguinte por exemplo eu tenho um form e nesse form tem uma Sub e um método o método recebe a informação digitada pelo cliente e manda para a sub que processa fazendo a consulta no banco de dados e devolvendo a resposta para o método, isso dentro do meu form. O código é esse:

primeiro sub o que recebe a informação:

Private Sub btnAcessar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAcessar.Click
          Dim codigo as String = txtCodigo.Text
         AcessarBanco(codigo)
 End Sub
Essa é a sub que processa no banco:
Sub AcessarBanco(ByVal codigo As Integer)
            Dim CodigoFuncionario As Integer = rg
            Dim Banco As New ConexaoOnline() ''acessa class 
            Banco.criaConexao() '' acessa conexao
            Banco.Conn.Open()

            Dim CasultaTerceiros As New MySqlCommand("select * from functerceiros where codigo='" & Trim(CodigoFuncionario) & "' limit 1", Banco.Conn)

            Dim da As New MySqlDataAdapter(CasultaTerceiros)
            Dim ds As New Data.DataSet()
            da.Fill(ds)

            Dim Nome As String = ds.Tables(0).Rows(0).Item("nome")
            MessageBox.Show(Nome)
        End Sub

    End Class

Esse código funciona legal, o que eu quero saber é o seguinte é melhor manter ele dessa forma dentro do meu form ou é melhor colocar a sub AcessarBanco dentro de uma class e apenas o método de botão acessar ficar no form? Se for em uma class como eu montaria isso ?

Valeu

Editado por alexandremanowar
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Eu particularmente prefiro abrir a conexão apenas uma vez durante toda a existência da aplicação, portanto eu criaria uma classe com um método Abrir() (para abrir a conexão) e um método Executar() (para executar uma instrução SQL qualquer e me devolver um DataSet). Daí, no meu form principal (ou em um módulo) eu criaria uma instância pública desta classe para utilização dentro do programa.

Mas, é claro, esta é apenas uma forma de se fazer isso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Mas Graymalkin, porque abrir uma vez e fechar apenas no final? Isso está fora das boas práticas de programação, além de não ser performático.

Aguardo respostas...

Já para o Alexandre:

Seguindo a simplicidade da lógica, crie uma classe conexão (implemente a interface IDisposable também, já que conexõesimplementam essa interface também) com métodos Abrir, Fechar e Executar (comando SQL). Ah! Use uma propriedade para representar a String de Conexão. Se você não quiser todo trabalho de reescrita, que tal usar a classe Database da Enterprise Library da Microsoft (uma biblioteca, frameowrk Open-Source, que visa boas práticas de programação)? Ela segue a lógica proposta por você. Olhe em: http://msdn2.microsoft.com/pt-br/library/a...453(en-us).aspx

Você poderia usar Dataset tipados, usando assim, prossguindo para o conceito de softwares N camadas.

Até mais! Falows!

Link para o comentário
Compartilhar em outros sites

  • 0
Mas Graymalkin, porque abrir uma vez e fechar apenas no final? Isso está fora das boas práticas de programação, além de não ser performático.

Aguardo respostas...

O que é melhor? Desligar o motor do carro sempre que parar em um semáforo ou mantê-lo em funcionamento? Obviamente que a performance (tempo de resposta) e o consumo (mais baixo) são melhores se você mantê-lo em funcionamento. Então, repare no tempo e custo de processamento que é necessário para estabelecer uma conexão com o servidor e depois disso executar a consulta e nos mesmos pontos quando a conexão já está estabelecida e somente a consulta é efetuada.

Além disso, quando você diz "boas práticas de programação" você deve ter imaginado bancos de dados baseados em arquivo (como Access ou dBASE) onde é aconselhável mantê-los fechados já que sinistros (problemas de escrita/leitura, desconexão abrupta da rede, desligamento por falta de energia, etc.) podem danificar este tipo de arquivo quando o mesmo está aberto. Porém, estamos falando aqui de um banco de dados cliente-servidor (MySQL, PostgreSQL, SQL Server, etc.) onde este tipo de problema não acontece (por parte dos clientes) já que toda a comunicação é feita pela rede e interpretada pelo servidor (que ignora quaisquer comandos inválidos possivelmente causados por problemas externos).

Sacou? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Ué Gray, leio isso em todo lugar, até mesmo na revista .Net Magazine que eu assino... Alias, até mesmo falando de bancos pesados como, por exemplo, SQL Server. Acho que é pelo fato de econômia de memória, não?

O que acha?

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Sinceramente, não creio que a economia de memória vá ser melhor neste caso. Pelo contrário, acho que vai ser pior já que você ficará alocando e desalocando memória para abrir e fechar conexões, já quando você abre apenas uma vez você só existe o trabalho de alocar (e desacolamento será feito no término do programa).

Agora, vale lembrar que estamos falando de programas para Windows Forms, e que no caso de Web Forms (ou seja, quando se está usando ASP.NET) é realmente necessário ficar abrindo e fechando conexões, pois não se tem a flexibilidade de se saber quando o usuário saiu da página e a quantidade de usuários pode ser extremamente grande e manter todas estas conexões ativas no servidor poderiam causar lentidão nas respostas. Mas, para Windows Forms, na minha opinião, é desperdício de processamento ficar abrindo e fechando conexões.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E ae pessoal beleza

Se tratando de winforms eu concordo com o Graymalkin! Não tem o porque ficar abrindo e fechando a conexão é um trabalho repetitivo e sem necessidade e é mais rápido deixar a conexão aberta do que ficar fachando e abrindo.

Agora para ASP o sacesso ao site pode ser grande e ter várias conexões e aí sim causar problemas.

Mas agradeço a todos pela ajuda

valeu

Link para o comentário
Compartilhar em outros sites

  • 0
e que no caso de Web Forms (ou seja, quando se está usando ASP.NET) é realmente necessário ficar abrindo e fechando conexões, pois não se tem a flexibilidade de se saber quando o usuário saiu da página e a quantidade de usuários pode ser extremamente grande e manter todas estas conexões ativas no servidor poderiam causar lentidão nas respostas.

nesse caso costumo setar a conexao no objeto Application. assim, não importa qtas pessoas acessem a pagina, só vou ter uma conexao ativa.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...