NOTÍCIA

Depuramento de erros

Aqui um exemplo do uso de duas rotinas
básicas para tratamento de erros ao conectar
no Banco de Dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data →.

DEFAULT.ASP
——————————————————-

<TITLE>Apurando Erros</TITLE>
<body bgcolor="#FFFFFF">
<!–#include file="lib_errors.asp"–>

<%
on error resume next
attempt="criando um objeto de conexão"

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

Call ErrorVBScriptReport(attempt)

attempt="abrindo
conexao"
conntemp.open "DSN=Student;uid=student;pwd=magic"

Call ErrorVBScriptReport(attempt)
Call ErrorADOReport(attempt,conntemp)

attempt="select
* from authors where AU_ID<16"
set rstemp=conntemp.execute(attempt)
Call ErrorVBScriptReport(attempt)
Call ErrorADOReport(attempt,conntemp)
If rstemp.eof then
response.write "Nenhum registro encontrado."
& "<P>"
response.write attempt
response.end
end if

attempt="contando
registros do recordset"
howmanyfields=rstemp.fields.count -1
Call ErrorVBScriptReport(attempt)
Call ErrorADOReport(attempt,conntemp)
%>
<table border=1>
<tr>
<% ‘Pega os Títulos da Tabela
for i=0 to howmanyfields %>
<td><b><%=rstemp(i).name %></B></TD>

<% next %>
</tr>

<% ‘ Pegando
todos os registros
do while not rstemp.eof %>
<tr>
<% for i = 0 to howmanyfields%>
<td valign=top><%=rstemp.fields(i)%></td>

<% next %>
</tr>
<%
rstemp.movenext
loop
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
</table>
</BODY>
</HTML↳HTML45 conteúdosA importância do HTML e CSS para quem trabalha com UI Design e Design SystemProduto & UX · dez 2024Como hostear seu site HTML gratuitamente com GitHub PagesDev (Back & Front) · jun 2025SQL Server – Como criar um versionamento de código das suas Stored Procedures em HTML e com comentários da alteraçãoData · nov 2020Ver tudo em Dev (Back & Front) →>
——————————————————-

——————————————————-

LIB_ERRORS.INC
——————————————————-

<%
SUB ErrorVBScriptReport(parm_msg)
If err.number=0 then
exit sub
end if
pad=" "
response.write "<b>VBScript Errors Occured!<br>"

response.write parm_msg & "</b><br>"

response.write pad & "Error Number= #<b>"
& err.number & "</b><br>"

response.write pad & "Error Desc.= <b>"
& err.description & "</b><br>"

response.write pad & "Help Context= <b>"
& err.HelpContext & "</b><br>"

response.write pad & "Help File Path=<b>"
& err.helpfile & "</b><br>"

response.write pad & "Error Source= <b>"
& err.source & "</b><br><hr>"

END SUB

SUB ErrorADOReport(parm_msg,parm_conn)

HowManyErrs=parm_conn.errors.count
IF HowManyErrs=0 then
exit sub
END IF
pad=" "
response.write "<b>ADO Reports these Database
Error(s) executing:<br>"
response.write SQLstmt & "</b><br>"

for counter= 0 to HowManyErrs-1
errornum=parm_conn.errors(counter).number
errordesc=parm_conn.errors(counter).description
response.write pad & "Error#=<b>"
& errornum & "</b><br>"

response.write pad & "Error description=<b>"

response.write errordesc & "</b><p>"

next
END SUB
%>
——————————————————-

Tratamento de Erros sem complicação:

Este Script mostra de uma maneira muito simples como
fazer o Tratamento de Erros ao acessar o banco de dados.

<%
On Error Resume Next
varErro = 0
Conexao.Open "blá blá…"
SQLStr = "SELECT * FROM MinhaTabela"
Set RS = Conexao.Execute(SQLStr)
If RS.EOF Or RS.BOF Then
varErro=1
Else
‘coloque os comandos aqui.
End If
%>
<html><head>
<TITLE>dbsimple.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<%If varErro = 1 Then%>
<p><h1>ERRO!</h1></p>
<%Else%>
<p>Coloque aqui a página de Resposta se
correr tudo bem.</p>
<%End If%>
</body></html>

Só tem um detalhe. Aquela
condição "If RS.EOF Or RS.BOF Then"
é utilizada quando sua SQL string é um
SELECT, que retorna dados. Quando vc está utilizando
o DELETE ou UPDATE, vc deve substituir essa condição
por: "If Err.Num > 0 Then", ok.?

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Mais de Redação iMasters
Ver perfil →