Leobreda.Net
HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL
Pesquisa por: função
27 de setembro de 2008 22:00376 visitas
Conforme os POSTs anteriores, estou enviando mais uma dica à respeito de Conexão ao Banco de Dados. Desta vez, estarei falando sobre o comando INSERT e UPDATE.
Atualmente, o comando SELECT é utilizado para ler resultados de um banco de dados. Já o INSERT, é um comando para INSERIR dados neste mesmo banco de dados. E para atualizar os dados, temos o UPDATE.
Seguindo os mesmos caminhos do Include CONEXAO.ASP, informado no post Boas práticas para trabalhar com ASP - Parte II ...
Arquivo conexao.asp
<%
Dim objConexao
Dim objComando
Dim executa
sub abreconexao()
Set objConexao = CreateObject("ADODB.Connection")
objConexao.commandTimeout=20
'MySQL Localhost
objConexao.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=leobredacom; User=root;Password=root;Option=3;"
objConexao.Open
conexao_executa=true
end sub
sub executaconexao(comando)
if conexao_executa=false then
call abreconexao
end if
set objComando = CreateObject("ADODB.Command")
objComando.ActiveConnection = objConexao
objComando.CommandText = comando
objComando.Execute()
Set objComando = Nothing
call fechaconexao
end sub
sub fechaconexao()
objConexao.Close : Set objconexao = Nothing
conexao_executa=false
end sub
%>
O arquivo pagina.asp, fazendo um SELECT, ...
<!--#include file="conexao.asp"-->
Olá, agora são <%=now()%>
<% strSQL = "SELECT ESTADO_DESC FROM TB_ESTADO WHERE PAIS='Brasil' ORDER BY ESTADO_DESC"
call abreConexao : set objRecordset = CreateObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao
while NOT objRecordset.EOF%>
Estado: <%=ObjRecordset("ESTADO_DESC")%><br />
<% objRecordset.MoveNext : Wend : objRecordset.Close : set objRecordset = Nothing : call fechaConexao%>
... inserindo e atualizando os resultados utilizando a sub executaConexao().
<!--#include file="conexao.asp"-->
<% strSQL = "INSERT INTO TB_ESTADO (PAIS, ESTADO) VALUES ('Brasil', 'São Paulo')"
executaConexao(strSQL)
strSQL = "UPDATE TB_ESTADO SET PAIS='Paraguai' WHERE ESTADO_DESC='Assunción'"
executaConexao(strSQL) %>
A própria sub abreConexao() faz a conexão ao banco de dados, e a execução do INSERT (ou UPDATE, conforme a necessidade).
23 de setembro de 2008 22:00544 visitas
Existem mil maneiras para fazer com que sua aplicação se conecte a um banco de dados, desde as piores, até as mais eficientes.
Uma delas é aquela que você cria os objetos de conexão, informa as strings de conexão, monta a query, lê os resultados e esquece que tem que destruir o objeto (é, infelizmente o Prof. Agnaldo esqueceu de comentar isso quando eu aprendi ASP na Impacta). No final do dia, você tem um computador de última geração com processador em 99% de uso e não sabe o que aconteceu.
No meu caso foi assim: meu primeiro programa foi montar um sistema que consultava uns dados no banco de dados, populava os mesmos numa tabela e fim de papo; quando a gente é iniciante, fica se gabando com aquelas páginas rodando no IIS com dados dinâmicos e esquece aquelas hospedagens gratuitas do tempo do Geocities.
Voltando para o programa, TODAS as páginas eu colocava logo na primeira linha um INCLUDE contendo os dados de conexão com o Banco de dados, e abria logo de cara, mesmo sem necessidade de utilizar Banco de Dados em algumas páginas.
O include CONEXAO.ASP seria este aqui:
Set objConexao = CreateObject("ADODB.Connection")
'MySQL
objConexao.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=leobredacom; User=root;Password=root;Option=3;"
objConexao.Open()
E esta seria uma página
<!--#include file="conexao.asp"-->
Olá, agora são <%=now()%>
Olha a tremenda merda que eu fiz: para escrever "Hello, Wordl!" não precisa de Banco de Dados.
E esta seria uma outra página, agora sim conectando a um banco de dados ;-)
<!--#include file="conexao.asp"-->
Olá, agora são <%=now()%>
<% strSQL = "SELECT ESTADO_DESC FROM TB_ESTADO WHERE PAIS='Brasil' ORDER BY ESTADO_DESC"
set objRecordset = CreateObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao
while NOT objRecordset.EOF%>
Estado: <%=ObjRecordset("ESTADO_DESC")%><br/>
<% objRecordset.MoveNext : Wend : objRecordset.Close : set objRecordset = Nothing : objConexao.Close : Set objConexao = Nothing
%>
*DICA: Experimente colocar várias instruções na mesma linha E separadas por ":" (dois pontos). Assim não precisa ficar aquele monte de linha com apenas 3 palavras.
O resultado do Recordset acima faria retornar todos os Estados do Brasil. Mas ainda assim:
Estudando um pouco mais, tive a necessidade de descobrir uma maneira mais eficiente (eu não tinha usado a lógica) de contornar este problema.
Então faria assim:
E cada vez que eu preciso de consultar o Banco de Dados, faço esta rotina repetidamente, desta maneira:
O include CONEXAO.ASP
Dim objConexao
sub abreconexao()
Set objConexao = CreateObject("ADODB.Connection")
objConexao.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=leobredacom; User=root;Password=root;Option=3;"
objConexao.Open()
end sub
sub fechaconexao
objConexao.Close : Set objConexao=Nothing
end sub
Já esta página, agora TODA VEZ QUE preciso conectar ao banco de dados, chamo a função abreConexao()
<!--#include file="conexao.asp"-->Olá, agora são <%=now()%>
<% strSQL = "SELECT ESTADO_DESC FROM TB_ESTADO WHERE PAIS='Brasil' ORDER BY ESTADO_DESC"
call abreConexao() : set objRecordset = CreateObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao
while NOT objRecordset.EOF%>
Estado: <%=ObjRecordset("ESTADO_DESC")%><br/>
<% objRecordset.MoveNext : Wend : objRecordset.Close : set objRecordset = Nothing : call fechaConexao()%>
Este é um método eficiente de conectar ao Banco de dados APENAS quando desejamos.
No próximo POST, estarei incrementando este artigo, na qual é possível montar uma GRID separando o HTML do ASP - ver Spaghetti.