Já estamos familiarizados com a execução de operações de banco de dados em ASP chamando procedimentos armazenados do SQL Server, mas você sabia que também podemos criar e usar procedimentos armazenados no banco de dados Access em nível de desktop?
Access + ASP é uma excelente combinação para desenvolver aplicações Web leves: simples, rápidas e compatíveis, mas o desempenho geralmente não é alto. Além disso, existem alguns inconvenientes no uso de objetos ADODB.Connection e Recordset para executar instruções SQL, porque os valores dos parâmetros das instruções SQL com parâmetros são frequentemente divididos em strings, portanto, há problemas como aspas simples. Um benefício do uso de procedimentos armazenados é que eles suportam o fornecimento adicional de valores de parâmetros de instruções SQL.
Na verdade, os chamados procedimentos armazenados no Access (2000 e superior) são incomparáveis com os procedimentos armazenados no SQL Server. Ele só pode ser considerado como Stored Procedure Lite, não suporta múltiplas instruções SQL, não suporta instruções lógicas (haha, afinal não é T-SQL), etc. No entanto, assim como as chamadas classes implementadas pelo VBScript são apenas encapsuladas e promovem grandemente o embelezamento da estrutura do código e a capacidade de reutilização do programa, os procedimentos armazenados leves do Access também devem ser úteis para padronizar e minimizar as operações do banco de dados de probabilidade de erro, e o desempenho pode ser melhorado.
Abaixo explicarei passo a passo como criar um procedimento armazenado no Access e depois utilizá-lo em um programa ASP.
(1) Crie um procedimento armazenado no Access
Não sei até que ponto todo mundo usa o Access. De qualquer forma, para mim é apenas uma ferramenta para criar arquivos de banco de dados MDB. Eu apenas crio novos arquivos MDB e depois crio tabelas, índices, restrições, etc. acabou~
As consultas no Access desempenham o papel de procedimentos armazenados. Os procedimentos armazenados ou consultas do Access que menciono abaixo referem-se a isso.
Para a criação de consultas, o Access fornece uma ferramenta fácil, semelhante ao assistente ao criar um DataAdapter no VS.NET. Mas eu gosto de escrever código SQL diretamente
Em seguida, clique no botão de consulta à esquerda na interface principal do Access e clique duas vezes em Criar Consulta no Modo Design à direita para abrir o modo de design da consulta.
Neste momento, o construtor de consulta visual aparece. Primeiro adicionamos as tabelas que a instrução SQL precisa envolver.
Depois de adicionar a tabela, clique com o botão direito na visualização de design e selecione Visualização SQL para alternar para a janela de edição de código SQL.
Ok, vamos falar sobre as características dos procedimentos armazenados do Access.
Minha sensação atual é que a consulta do Access é um wrapper para a instrução SQL, talvez com alguma otimização, como pré-compilação. Não podemos usar múltiplas operações, transações, julgamentos lógicos, loops, etc., como escrever procedimentos armazenados do SQL Server...
Mas o principal objetivo do uso de procedimentos armazenados do Access é usar consultas fornecidas por parâmetros adicionais. Usando procedimentos armazenados, não precisamos mais enfrentar os vários problemas encontrados ao unir valores de parâmetros em strings de instruções SQL, como:
Código:
Escurecer SQL
sql = SELECT * FROM Usuários WHERE UserName = ' & userName & '
No código acima, se a variável de string userName contiver 'aspas simples, um erro será relatado. Temos que converter manualmente:
Código:
Escurecer SQL
sql = SELECT * FROM Users WHERE UserName = ' & Replace(userName, ', '') & ' ' é convertido em duas aspas simples consecutivas
Usando consulta com parâmetros, nossa instrução SQL pode ser escrita como:
Código:
Escurecer SQL
sql = SELECT * FROM Usuários WHERE NomeUsuário = @nomeUsuário
Depois é só passar o valor do parâmetro @userName usando a propriedade Parameter do objeto Command, o que é muito prático e intuitivo.
Código:
Com cmd
'Cria objeto parâmetro
.Parameters.Append .CreateParameter(@userName)
'Especifique valores para cada parâmetro
.Parâmetros(@nomedeusuário) = nomedeusuário
Terminar com
Aqui também explicamos o uso de parâmetros em procedimentos armazenados do Access. Ao contrário dos procedimentos armazenados do SQL Server, que usam variáveis @ para especificar parâmetros e depois passam objetos de parâmetro com o mesmo nome, os parâmetros no Access são identificados por ordem e não por nome. Não há necessidade de especificar um nome para os parâmetros passados. Você pode nomeá-los casualmente. Os nomes dos parâmetros no SQL também podem ser nomeados casualmente, desde que os valores dos parâmetros sejam passados, eles devem ser especificados na ordem. em que os parâmetros aparecem na instrução SQL. Normalmente, usamos o método Execute do objeto Command e passamos diretamente a matriz de valores do parâmetro para executar ~
Código:
cmd.Execute, Array (nome do usuário)
Para outro exemplo, um dos seus procedimentos armazenados do Access é escrito assim:
Código:
selecione * em Usuários onde UserName = p_UserName e BookTitle = p_bookTitle
Você pode fazer isso desta maneira, passando uma matriz de valores de parâmetros, mas na ordem correta:
Código:
cmd.Execute, Array(userName, bookTitle)
OK, vamos dar uma olhada nas duas consultas usadas em nosso exemplo, uma é para gravar dados. Depois de escrever a instrução SQL, salve-a e nomeie-a.
Outro código de procedimento armazenado que lê dados.
(2) Usando procedimentos armazenados
Então podemos chamar esses procedimentos armazenados no programa ASP.
Aqui você pode ver porque eu disse que a consulta no Access é seu procedimento armazenado - a propriedade CommandType do nosso objeto Command está definida como 4, que é Stored Proc!
então...
O código a seguir é muito simples:
Código:
<%
Opção Explícita
Escurecer
Randomizar
s = Volta * 100
Dim conexão, cmd
Definir conexão = Server.CreateObject(ADODB.Connection)
Definir cmd = Server.CreateObject(ADODB.Command)
conn.Open Provider = Microsoft.Jet.OLEDB.4.0 Fonte de dados = & Server.MapPath (sp.mdb)
Com cmd
.ActiveConnection = conexão
.CommandType = &H0004 'Procedimento armazenado
.CommandText = AdicionarNovosDados
Terminar com
cmd.Execute, Array(CStr(Agora()), CSng(s))
Com cmd
.ActiveConnection = conexão
.CommandType = &H0004 'Procedimento armazenado
.CommandText = ObterDados
Terminar com
Dim resultRS, resultArray
Definir resultadoRS = cmd.Execute(, Nulo)
Se não resultRS.EOF então
resultArray = resultadoRS.GetRows()
Terminar se
Definir resultadoRS = Nada
Definir cmd = Nada
conexão.Fechar
Definir conexão = Nada
Resposta.Write <ul>
Escureça eu
Para i = 0 Para UBound(resultArray, 2)
Response.Write <li> & resultArray(0, i)
Response.Write & resultArray(1, i)
Response.Write & resultArray(2, i)
Resposta.Escrever </li>
Próximo
Resposta.Escrever </ul>
%>