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

Otima Função Para Conectar No Banco!


hackerclube

Pergunta

Opa!

Há alguns anos atraz (quando era novato na programação ASP), tinha problemas para conectar no banco.

Abria e fechava dezenas de conexões nos sites e isso trazia uma serie de problemas.

1- Quando era presciso alterar o nome do banco eu tinha que mudar desenas de páginas.

2- O site ficava lento, travava e até dava erro pelo numero excessivo de conexões abertas. e etc....

dae resolvi fazer alguma função para mudar isso e facilitar minha vida.

dae nasceu esse cod. vejam, usem e abusem smile.gif


<%
Session.LCID = 1046 '# Eu deixo isso pra não ter problemas com as datas brasileiras nos sqls
Response.Buffer = True '# Isso informa ao script que a página deve ser enviada ao navegador somente depois de totalmente processada. (evita problemas no response.redirect)
Session.Timeout = 600 '# Aqui eu defino um tempo limite para o processamente da página (em segundos)

set conexao = createobject("adodb.connection")
caminho ="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("dados\nome_banco.mdb") &";userid=usuario_banco;password=senha_banco"

session("conectado") = "não"
sub conecta()
if session("conectado") = "não" then
conexao.open caminho
session("conectado") = "sim"
end if
end sub
sub desconecta()
if session("conectado") = "sim" then
conexao.close
session("conectado") = "não"
end if
end sub
%>

É só colocar esse cod em um arquivo (digamos conecta.asp) e depois colocar em todas as suas páginas como include <!--#include file="conecta.asp"--> para conectar no banco basta você escrever
conecta
antes de executar a conexão. ex.
<!--#include file="conecta.asp"-->
<%
conecta
set rs = conexao.execute("SELECT * FROM BANCO WHERE CAMPO = 'VALOR' ORDER BY CAMPO DESC;")
%>
no final da página você coloca
desconecta

para ele fechar a conexao ou simplismente deixe-a aberta pois o sistema não abre nova conexão se já estiver conectado.

prontinho

com isso você já conectou no banco e executou a sql, espero ter ajudado. smile.gif

duvidas podem postar smile.gif

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0
Guest - Romulo -

alguém pode me ajudar ? você não falou como eu faço para fechar a conexão

se eu fizer assim então:

<% conecta %>

codigos sql

<% desconecta %>

em um banco SQL ele vai funcionar ?

Link para o comentário
Compartilhar em outros sites

  • 0

hackerclube,

dá pra melhorar e muito este seu código.

e você é o cara, dono dakele site de hacker's lá? hackerclube, clubhacker, nen, algo assim..

Link para o comentário
Compartilhar em outros sites

  • 0
' date='Mar 1 2005, 08:57 AM'] hackerclube,

dá pra melhorar e muito este seu código.

e você é o cara, dono dakele site de hacker's lá? hackerclube, clubhacker, nen, algo assim..

esse site tá fora do ar, faz uma cara já hehe...

melhorar como !??????????????????

Link para o comentário
Compartilhar em outros sites

  • 0

alguém pode me ajudar ? você não falou como eu faço para fechar a conexão

se eu fizer assim então:

<% conecta %>

codigos sql

<% desconecta %>

em um banco SQL ele vai funcionar ?

SIM ESSE CÓDIGO FUNCIONARÁ PERFEITAMENTE EM QUALQUER TIPO DE BANCO DE DADOS, VOCÊ PRECISARÁ APENAS EDITAR O CAMINHO E O DRIVER DO BANCO QUE DESEJA UTILIZAR!

===========================================================

hackerclube,

dá pra melhorar e muito este seu código.

e você é o cara, dono dakele site de hacker's lá? hackerclube, clubhacker, nen, algo assim..

PRA MIM O CÓDIGO ESTÁ PERFEITO, É SIMPLES, RAPIDO, PRATICO E EFICAZ.

===========================================================

esse site tá fora do ar, faz uma cara já hehe...

melhorar como !??????????????????

AQUELE SITE HACKERCLUBE EU O FECHEI PORÉM ABRI OUTRO O CLUBE DOS HACKERS, PARA CONHEÇE-LO CLIQUE AQUI

===========================================================

ABRAÇOS A TODOS E QUALQUER COISA PODEM ME PROCURAR!

Link para o comentário
Compartilhar em outros sites

  • 0

Dicas:

pra que usar uma session nesta página?

por quê não destrói o objeto no final? (na sub que fecha a conexao)

Akel server.mappath pode dar dor de cabeça na hora de trocar de servidor, ou colocar páginas em um diretótio acima da pasta raiz...

você pode também fazer uma condicao, para colocar um caminho físico para uso local, e caso contrário, usar caminho físico para uso remoto.

tá aí as dicas, agora é contigo!

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

eu uso assim:

<%

Set Conn = Server.CreateObject("ADODB.Connection")

Session("conectado") = "false"

Sub connect()

If not Session("conectado") Then

Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("banco.mdb")

Session("conectado") = "true"

End If

End Sub

Sub disconnect()

If Session("conectado") Then

Conn.Close

Set Conn = Nothing

Session("conectado") = "false"

End If

End Sub

%>

dá pra melhorar esse aqui também ???

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, como falei antes, pra que usar Session?

E uma coisa que eu fiz na minha page de conexao, e fica muito bom quando você precisa ficar trabalhando com ela em em casa e depois enviando pro servidor, é verificar aonde tá, se ela está rodando localmente ou remotamente. Daí, pra local você cria um caminho físico completo para o bd, e remotamente um outro...

É simples!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Romulo -

eu usei esse codigo que o VINICIOSJAU colocou , mais ele dá esse erro:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/livro/root/aprende.asp, line 225

a minha linha 25 é essa:

<% set rs = objConn.Execute("Select * from Tabela1")%>

alguém pode me ajudar ? sad.gifunsure.gif

Link para o comentário
Compartilhar em outros sites

  • 0
eu usei esse codigo que o VINICIOSJAU colocou , mais ele dá esse erro:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/livro/root/aprende.asp, line 225

a minha linha 25 é essa:

<% set rs = objConn.Execute("Select * from Tabela1")%>

alguém pode me ajudar ? sad.gifunsure.gif

tenta assim:

<% set rs = Conn.Execute("Select * from Tabela1")%>

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Dilton Maia
Opa!

Há alguns anos atraz (quando era novato na programação ASP), tinha problemas para conectar no banco.

Abria e fechava dezenas de conexões nos sites e isso trazia uma serie de problemas.

1- Quando era presciso alterar o nome do banco eu tinha que mudar desenas de páginas.

2- O site ficava lento, travava e até dava erro pelo numero excessivo de conexões abertas. e etc....

dae resolvi fazer alguma função para mudar isso e facilitar minha vida.

dae nasceu esse cod. vejam, usem e abusem :)


<%
Session.LCID = 1046 '# Eu deixo isso pra não ter problemas com as datas brasileiras nos sqls
Response.Buffer = True '# Isso informa ao script que a página deve ser enviada ao navegador somente depois de totalmente processada. (evita problemas no response.redirect)
Session.Timeout = 600 '# Aqui eu defino um tempo limite para o processamente da página (em segundos)

set conexao = createobject("adodb.connection")
caminho ="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("dados\nome_banco.mdb") &";userid=usuario_banco;password=senha_banco"

session("conectado") = "não"
sub conecta()
if session("conectado") = "não" then
conexao.open caminho
session("conectado") = "sim"
end if
end sub
sub desconecta()
if session("conectado") = "sim" then
conexao.close
session("conectado") = "não"
end if
end sub
%>

É só colocar esse cod em um arquivo (digamos conecta.asp) e depois colocar em todas as suas páginas como include <!--#include file="conecta.asp"--> para conectar no banco basta você escrever
conecta
antes de executar a conexão. ex.
<!--#include file="conecta.asp"-->
<%
conecta
set rs = conexao.execute("SELECT * FROM BANCO WHERE CAMPO = 'VALOR' ORDER BY CAMPO DESC;")
%>
no final da página você coloca
desconecta

para ele fechar a conexao ou simplismente deixe-a aberta pois o sistema não abre nova conexão se já estiver conectado.

prontinho

com isso você já conectou no banco e executou a sql, espero ter ajudado. :)

duvidas podem postar :)

Como resolvo esse problema?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - HackerClube -

<%
Session.LCID = 1046 '# Eu deixo isso pra não ter problemas com as datas brasileiras nos sqls
Response.Buffer = True '# Isso informa ao script que a página deve ser enviada ao navegador somente depois de totalmente processada. (evita problemas no response.redirect)
Session.Timeout = 600 '# Aqui eu defino um tempo limite para o processamente da página (em segundos)

set conexao = createobject("adodb.connection")
caminho ="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("nome_banco.mdb") &";userid=usuario_banco;password=senha_banco"

session("conectado") = "não"
sub conecta()
if session("conectado") = "não" then
conexao.open caminho
session("conectado") = "sim"
end if
end sub
sub desconecta()
if session("conectado") = "sim" then
conexao.close
session("conectado") = "não"
end if
end sub
%>

Uso o MapPath para pegar o caminho da pasta........

uso a session para definir se a conexao já está aberta ou não.....

Pois pra que ficar abrindo a conexao se ela já esta ativa.........

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - pogoball -

hackerclube, você fecha a conexão a cada página para não criar gargalos no server com muitas conexões simultaneas no server. lembrando que a maioria dos servers sqlserver suporta até 25 conexões abertas no bd, na 26ª ele kika o usuario.

atualmente meu codigo funciona assim para bancos sql server

bibconexao.asp

<%

'-----------------------------

'Biblioteca de Conexão do Site

'-----------------------------

sub onsite

set bco = server.createobject("adodb.connection")

'sql out

'bco.open "Provider=SQLOLEDB;Data Source=IPDOSERVER;Initial Catalog=BANCODEDADOSINICIAL;User Id="&Application("lSql")&";Password="&Application("sSql")&";Persist Security Info=False;"

'SQL IN

'bco.open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=BANCODEDADOSINICIAL;Data Source=PC"

end sub

sub offsite

bco.close : set bco = nothing

end sub

%>

pergunta: porque puxar aplications?

resp.: porque uso essa conexão em muitos lugares no site, dessa forma mantenho o login e a senha em um unico lugar, que é mais seguro do que manter no prprio arquivo. se alguém baixar meu arquivo dá com a cara em um application e não sabe senha nem usuario

pergunta: porque você usa subs ao invés de funções?

resp.: porque é mais rápido e se alguém baixar meu codigo e tentar rodar em versões antigas do iis e pws não consegue

pergunta: nos bds sql server você mantem todas as consultas e processos no programa?

resp.: NÃO, na medida do possivel, mantenha outros bjetos na base, diminuindo o numero de consultas diretas nas tabelas.

pergunta: como eu implemento???

resp.:

<!--#include file="bibconexao.asp"-->

<%

DIM SQL,BCO 'bco é criado no sub, que vai ser chamado abaixo

Onsite() 'isso é o sub que está em bibconexao.asp

SQL = ""

SQL = SQL & "SELECT * from tabela "

SQL = SQL & "WHERE teste=1"

SET = variavel BCO.EXECUTE(SQL) 'assim você encurta as linhas de codigo

%>

lalalalalalalla 'tudo que você precisar fazer com o recordset

<%variavel.close : SET variavel = Nothing 'IMPORTANTISSIMO, NÃO ESQUEÇA NUNCA DE FAZER ISSO%>

<%OffSite()'aqui fecha-se a variavel BCO%>

espero ter ajudado!!!

a mais nova versão desse barato conecta com 7 bds Access!!! dificil não se perder neles todos!!

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...