Este artigo usa a DLL gerada pelo VB para encapsular o código ASP para conexão ao banco de dados (tomando o banco de dados Access como exemplo).
Em circunstâncias normais, quando usamos ASP para nos conectar ao banco de dados Access, geralmente realizamos as seguintes operações
'//Proconn.asp
<%
dimProConn
definir ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Driver do Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'Um banco de dados Access que era originalmente DB.mdb é alterado para um arquivo com o sufixo DB.asp, e a senha do banco de dados é 123
se err.Number <> 0 then
ResPonse.Write "Não há link para o banco de dados, verifique"
Resposta.Fim
outro
ResPonse.Write "Conexão com o banco de dados bem-sucedida"
Resposta.Fim
terminar se
%>
Se o servidor estiver configurado, acesse Proconn.asp. Se a conexão com o banco de dados for bem-sucedida, será exibida a mensagem "Conexão com o banco de dados bem-sucedida".
No entanto, o nível de segurança desse código asp é muito baixo. Se o asp original for visto por outras pessoas, se houver esse arquivo de banco de dados, outras pessoas poderão facilmente abrir seu banco de dados para operações.
Então aí vem nossa tarefa: como encapsular esses conteúdos principais?
Primeiro você precisa determinar o método, método e objeto.
Depois de verificar algumas informações na Internet, elas são encapsuladas principalmente usando VB para gerar DLL, então também devemos adotar este método (embora eu realmente não tenha usado VB)
para determinar qual é o objeto que precisamos encapsular ?
Venha ver todos
"driver={Driver do Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
É o código mais crítico. Deveria ser melhor encapsular esse código em uma DLL gerada com VB.
A razão pela qual não o todo
dimProConn
definir ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Driver do Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Todos são encapsulados (porque existem instruções na Internet para encapsular todo o código de conexão) porque quando outros arquivos asp fazem referência a Proconn.asp,
Também preciso do ProConn interno para realizar outras operações. Se estiver encapsulado, será inconveniente referenciar e operar.
(A explicação acima do objeto de encapsulamento é minha opinião pessoal. Alguns amigos disseram que o encapsulamento geral não tem impacto no uso do ProConn. Não entendo isso. Por favor, diga-me se você sabe)
Eu só quero encapsular a parte mais crítica ""driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")"
para analisar este parágrafo . o conteúdo do pacote,
A primeira metade é uma string:
"driver={Driver do Microsoft Access (*.mdb)};uid=;pwd=123;DBQ="
Use & para concatenar a segunda metade de outra string.
A outra string na segunda metade é o valor de retorno da função do objeto Server.MapPath.
Vamos iniciar o processo de operação de encapsulamento.
Primeiro, crie um novo projeto ActiveX DLL em VB. Altere o nome do projeto Project1 para ConDBDLL??
O nome do projeto e o nome do método serão usados ao chamar esta DLL. Você pode defini-los de acordo com suas próprias regras de nomenclatura, mas tome cuidado ao usá-los com cuidado.
A parte do código desta DLL é escrita da seguinte forma:
Dim rp As Response
Dim rq conforme solicitação
Dim ap como aplicativo
Dim sr como servidor
Dim sn As Session
Public Sub OnStartPage(MyScriptingContext As ScriptingContext)
Definir rp = MyScriptingContext.Response
Definir rq = MyScriptingContext.Request
Definir sr = MyScriptingContext.Server
Definir ap = MyScriptingContext.Application
Definir sn = MyScriptingContext.Session
Fim Sub
Público Sub OnEndPage()
Definir rp = Nada
Definir rq = Nada
Definir sr = Nada
Definir ap=Nada
Definir sn=Nada
Finalizar sub
'A instrução acima é necessária. O objeto original foi simplificado e processado em duas funções básicas.
Public Function ConnectDB() As Variant
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid =;pwd=123; DBQ="
Função Final
'A função acima processa a primeira metade da string e retorna diretamente o conteúdo desta string
' Além disso, defina a seguinte função para processar a segunda metade do conteúdo
Função pública DBPath() como variante
DBPath = sr.MapPath("DB.asp")
Função final
'Observe que o acima usa sr, não o use como servidor. Agora
chegamos à etapa crítica. Adicione a referência de "Biblioteca de objetos ObjectContext do Microsoft Active Server Pages" a este projeto.
Para adicionar um método, selecione "Projeto"->"Referência" no menu e selecione-o na caixa de diálogo aberta.
A propósito, também precisamos selecionar "biblioteca Microsoft ActiveX Data Objects 2.6"
para
realizar as operações acima. Podemos compilar e gerar DLL (não se esqueça de alterar o nome do projeto e o nome do método anteriormente).
DB.asp (escrito por DB .mdb é formado alterando o sufixo, a senha é 123)
A seguir está o código para chamar o arquivo asp encapsulado que se conecta ao banco de dados:
'//ProConn.asp
<%
dimProConn
definir ProConn=Server.CreateObject("ADODB.CONNECTION")
DimConDB
definir ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB é o objeto DLL criado
Dim StrConn
'Define uma string
StrConn = ConDB.ConnectDB() & ConDB.DBPath()
'Concatena as duas partes para formar uma string
ProConn.OpenStrConn
'Executa operações de objetos de banco de dados
%>
Por se tratar de uma DLL criada por você mesmo, após copiá-la para o diretório correspondente, ela deve ser registrada antes de poder ser utilizada.
Método registrado, executado em “Run”:
Regsvr32.exe lyfUpload.dll
O método para cancelar o registro desta DLL é: Regsvr32.exe /u lyfUpload.dll
Após a conclusão do registro, nosso trabalho está basicamente concluído. Agora podemos usar esse método de encapsulamento para conectar-se a um alvo. banco de dados.
Porém, há uma coisa que precisa de atenção especial:
porque
DimConDB
definir ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB é o objeto DLL criado. Este é um objeto criado em ASP, incluindo ProConn. Então lembramos de liberar esses dois objetos em quaisquer outros arquivos ASP que usem (referência) ProConn.asp!
ProConn.fechar
setProConn = nada
setConDB=Nada
Caso contrário, o sistema ficará cada vez mais sobrecarregado porque os objetos não serão liberados.
Em relação a este método de encapsulamento de código ASP para conexão ao banco de dados Access, acho que é totalmente aplicável ao método de conexão de outros bancos de dados.
Acho que meu método não é o melhor. Se houver alguma deficiência, corrija-me se você leu.