As funções do programa têm uma estrutura geral. Na verdade, você mesmo pode adicionar algumas funções, como a conexão inicial do banco de dados. Você pode definir
variáveis primeiro e depois selecionar diferentes tipos de bancos de dados por meio de INIT()
<%.
'Em caso de erro, retomar próximo
ClasseConnEx
publicConnEx
public DBpath '---------caminho do banco de dados
public DBtype '--------Tipo de banco de dados 1 (Access) 2 (SqlServer) 3 (expansível)
public ConnMethod '--------Método de conexão (DSN, não DSN)
usuário público
passe público
Subclasse_initialize
Fim Sub
Sub Init()
ConnStr = "Driver={Driver do Microsoft Access (*.mdb)};dbq="&Server.MapPath("Data.mdb")
Definir ConnEx = Server.Createobject("ADODB.CONNECTION")
ConnEx.Open ConnStr
CatchError("Class_Terminate")
Fim Sub
Sub CatchError (Str)
Se errar então
Err.Limpar
Class_Terminate()
Response.Write("Erro detectado, programa termina! Em "&Str&"")
Resposta.End()
Terminar se
Fim do sub
'******************************************
'*Procurar a existência de registros através de instruções SQL é propenso a erros'************************************ ** ******
Função HasRecordBySql(Sql)
Chame CheckSql(Sql,"R")
Dim Rs,HasR
Definir Rs = ConnEx.Execute (Sql)
CatchError("HasReordSql")
Se não (Rs.eof ou Rs.bof) então
HasR=Falso
Outro
HasR = Verdadeiro
Terminar se
Rs.Fechar
Definir Rs = Nada
HasRecordBySql = HasR
Função final
'******************************************
'*Descubra se o registro existe por ID'**********************************
Function HasRecordById(StrTableName, IntID )
'CheckValue(IntID, 1)
Dim Rs,HasR
Sql = "Selecione o primeiro * de "&StrTableName&" Where Id = "&IntID
Chame CheckSql(Sql,"R")
Definir Rs = ConnEx.Execute(Sql)
CatchError("HasRecordByID")
Se não (Rs.eof ou Rs.bof) então
HasR=Falso
Outro
HasR = Verdadeiro
Terminar se
Rs.fechar
Definir Rs = Nada
HasRecordById = HasR
Função final
'*******************************************
'*Obter o conjunto de registros através da instrução SQL'**************************************** ** *****
Função GetRsBySql(Sql)
Chame CheckSql(Sql,"R")
Diminuir Rs
Definir Rs = Server.CreateObject("Adodb.RecordSet")
Rs.Open Sql,ConnEx,1,1
Definir GetRsBySql = Rs
Função final
'********************************************** *
'*Obtém o valor de um determinado campo'**************************************** ** ****
Função GetValueBySql(Sql)
Chame CheckSql(Sql,"R")
Dim Rs, valor de retorno
Definir Rs = ConnEx.Execute(Sql)
CatchError("GetValueBySql")
Se não (Rs.Eof ou Rs.Bof), então
Valor de Retorno = Rs(0)
Outro
ReturnValue = "Sem registro"
Terminar se
Rs.Fechar
Definir Rs = Nada
GetValueBySql = ReturnValue
Função Final
'============================Atualizar,Inserir================ ====
'********************************************* ***
'*Usar SQL para modificar dados'****************************************** **
Função UpdateBySql(Sql)
Chame CheckSql(Sql,"w")
ConnEx.Execute(Sql)
CatchError("AtualizaçãoBySql")
UpdateBySql = Verdadeiro
Função final
'********************************************** *
'*Inserir dados usando instruções SQL'****************************************** **
Função InserirBySql(Sql)
Chame CheckSql(Sql,"w")
ConnEx.Execute(Sql)
CatchError("InserirBySql")
InserirBySql = Verdadeiro
Função final
'====================== Excluir ======================
'* ********************************************
'*Excluir via instrução SQL'******************************************* ***** *
Função DeleteBySql(Sql)
Chame CheckSql(Sql,"D")
ConnEx.Execute(Sql)
CatchError("DeleteBySql")
DeleteBySql = Verdadeiro
Função final
'********************************************** *
'*Verifique as permissões da instrução SQL e detecte as permissões pertencentes à instrução de acordo com a sinalização'********************************* **** *************
SubCheckSql (Sql, Sinalizador)
Dim StrSql,SinCounts,DouCounts,i
StrSql = Lcase(Sql)
SinCounts = 0
DouContagens = 0
Para i = 1 para Len(StrSql)
Se Mid(StrSql,i,1) = "'" Então SinCounts = SinCounts + 1
Se Mid(StrSql,i,1) = """" Então DouConnts = DouCounts + 1
Próximo
If (SinCounts Mod 2) <> 0 Ou (DouCounts Mod 2) <> 0 Ou Instr(StrSql,";") > 0 Então
Chame Class_Terminate()
Response.Write("Erro de sintaxe SQL!")
Resposta.End()
Terminar se
Selecione Sinalizador de Caso
Caso "R","r":
Se Instr(StrSql,"delete") > 0 Ou Instr(StrSql,"update") Ou Instr(StrSql,"drop") > 0 Ou Instr(StrSql,"insert") > 0 Então
Class_Terminate()
Response.Write("Permissões insuficientes, sem permissão para realizar operações de gravação")
Resposta.End()
Terminar se
Caso "W","w":
Se Instr(StrSql,"delete") > 0 Ou Instr(StrSql,"drop") > 0 Ou Instr(StrSql,"select") > 0 Então
Class_Terminate()
Response.Write("Permissões insuficientes, sem permissão para executar a operação de exclusão")
Resposta.End()
Terminar se
Caso "D","d":
Outro caso:
Response.Write("Erro de sinalizador de função CheckSql!")
Finalizar seleção
Fim Sub
Subclasse_Terminar
Se não estiver vazio (FriendConn), então
FriendConn.Fechar
Definir FriendConn = Nada
CatchError()
Terminar se
Finalizar sub
Fim da aula
%>