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

Abrir de fechar tabela no banco


sacofritoxd

Pergunta

Bom dia galera,

Bom eu sempre vejo nos tópicos aqui o pessoal abrindo e fechando a tabela e tal.

Mas aqui onde trabalho não temos esse costume, ela é aberta "set tabela ...." e no final não fechamos, seja se for pra abrir uma auxiliar para selecionar dados filtrados ou para insert de novos dados. Ou seja, não fechamos a tabela, ela fica aberta.

Qual a finalidade de abrir e fechar as tabelas? Influencia muito no desempenho(que influencia, acredito que seja óbvio que atrapalhe)? O fato de deixar várias tabelas abertas pode ajudar a corromper o banco de dados? Pois já li algo sobre variaçao da rede e se tiver tabela aberta pode corromper e etc...

Usando DAO 3.6, como eu fecho a tabela? Apenas "rsTabela.close" ao final dos comandos que desejo usar nela?

Obrigado desde já,

Abraços

Sacofrito

Editado por Jonathan Queiroz
Remover caixa alta do título conforme regra 3.7 (Jonathan)
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

sacofritoxd, na verdade não costuma se "abrir tabelas" no seu programa. quando a gente vai acessar os dados da tabela, a gente pode selecionar os registros na memoria (ou seja, le a tabela uma unica vez, e copia a selecao para a memoria, não ficando nenhum vinculo com a tabela no banco de dados. nesse caso, costumamos chamar o recordset como do tipo estatico), ou pode criar um ponteiro para os registros da tabela direto no banco de dados (nesse caso, chamamos o recordset de dinamico. tambem é desse modo q costuma ocorrer com os controles de dados).

esse tutorial do macoratti da uma boa explicacao sobre isso: http://www.macoratti.net/dao_ado2.htm

quanto a ficar abrindo e fechando, acontece q sempre q o programa termina de executar a rotina a q o recordset pertence, ele já é fechado automaticamente e o recordset é então destruido da memoria.

ou seja, não se tem necessidade de mandar fechar (a não ser q você esteja usando varios recordsets na mesma sub, ou no mesmo form), mas é muito comum faze-lo por costume, ou pra se certificar q o fechamento esteja mesmo ocorrendo. eu acho q é preferivel q você coloque uma linha a mais pra fechar do q deixar o vb fechar sozinho, melhor fazer você mesmo do q depender q os outros facam.

agora, quanto a recordsets publicos, caso você não chame o .Close() em nenhum momento, ele sera fechado somente no momento em q o programa for finalizado (ou caso você execute alguma outra query pra dentro dele).

então, nesse caso, basicamente, a finalidade de fechar é q o espaco seja liberado da memoria. fora q os recordsets dinamicos ainda ficam com o ponteiro aberto para a tabela, e procuram por atualizacao dos registros e tudo mais.

agora se influencia muito ou não... hj em dia, os equipamentos estao cada vez mais potentes, e as maquinas tem cada vez mais memoria, isso faz cada vez menos diferenca em aplicacoes pequenas. mas é sempre bom limpar a memoria, principalmente porque você não sabe qual a mquina q o cara vai usar, e sabe-se la se o banco de dados vai crescendo, de repente pode fazer mta diferenca um recordset na memoria.

agora se você sabe q você vai trabalhar com bancos de dados gdes, ou com hardwares limitados, é muito importante ficar de olho nisso.

então, é bom sempre fechar os recordsets, principalmente os publicos. os estaticos, feche sempre q você não precisar mais dos dados selecionados.

o mesmo pros dinamicos. mas os dinamicos, na verdade, é bom usa-los so se você souber o q esta fazendo. então você deve saber a hora de fechar.

o codigo pra fechar deve ser esse mesmo ai, mas eu não conheco muito sobre DAO não, menos ainda lembro os codigos de cabeca. agora aquele link do macoratti deve passar o codigo.

O fato de deixar várias tabelas abertas pode ajudar a corromper o banco de dados? Pois já li algo sobre variaçao da rede e se tiver tabela aberta pode corromper e etc...

não, isso é muito dificil. isso era do tempo do dbu e outros formatos antigos de bancos de dados. hj em dia, os desenvolvedores de bds e de providers já tomaram todos os cuidados pra evitar esse tipo de problema.

mas de preferencia, não deixe varias recordsets abertos. pelos motivos explicados acima...

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...