O ASP é uma ferramenta poderosa para gerar páginas da Web interativa dinâmica. Abaixo está um tutorial sobre o uso de armazenamento ASP que o editor compartilhou com você. Amigos interessados, vamos aprender sobre isso com o editor!
1. Passe os parâmetros usando objetos de comando e objetos de parâmetro. Esta palestra usará principalmente o banco de dados do Microsoft SQL Server 7.0. Primeiro, crie um arquivo de conexão adosql7.asp para backup. Não vou especificar quando for usado posteriormente.
%'' Adosql7.asp
OptionExplicit
Response.Expires = 0
'' Parte 1: estabelecendo uma conexão
Dimcnn, strcnn
Setcnn = server.createObject ("adodb.connection")
Strcnn = "provider = sqloledb; userID = sa; senha =; inicialcatalog = pubs; DataSource = icbczjp"
CNN.OPENSTRCNN
%>
NOTA: Ao usá -lo, defina o DataSource como o nome da máquina do seu servidor de banco de dados.
Além disso, ao usar bancos de dados de acesso no passado, o Microsoft Access97 pode visualizar facilmente campos e dados. Ao usar bancos de dados SQLServer, especialmente ao depurar scripts ASP em outra máquina, você precisa instalar ferramentas adicionais para visualizar campos e dados. Aqui fornecemos uma ferramenta: msqry32.exe (MicrosoftQuery). Este arquivo está instalado com o Office97 e geralmente está localizado no diretório "Microsoft Office/Office".
Exemplo wuf70.asp:
%@Idioma = "vBScript"%>
!-#incluirfile = "adosql7.asp"->
!-#incluirfile = "Adovbs.inc"->
%'' wuf70.asp
Dimcmdtest, prmtest, rstest
'' Criar objeto de comando
SetCmdTest = Server.CreateObject ("Adodb.Command")
'RecordSet e Command Objects podem ser conectados aos objetos de conexão através da propriedade ActiveConnection.
cmdtest.activeConnection = cnn
'' Comando SQL - contém dois parâmetros, expressá -lo?
cmdtest.CommandText = "UPDATEJOBSSETJOB_DESC =? WhereJob_Id =?"
'' Suponha que o tipo de comando seja a instrução SQL
cmdtest.CommandType = adcmdText
'' A propriedade preparada determina se deve compilar o comando sql primeiro, defina -a como true para acelerar a execução
cmdtest.prepared = true
'' Crie objeto de parâmetro
SetPrmTest = cmdtest.createParameter ("job_desc", vardar, adparaminput, 50, "rede")
'' Anexar dados à coleção de dados de parâmetros
cmdtest.parameters.appendPrmTest
Setprmtest = cmdtest.createParameter ("job_id", adsmallint, adparaminput ,, "12")
cmdtest.parameters.appendPrmTest
'' Execute a modificação - não há necessidade de retornar o resultado, basta usar cmdtest.execute
cmdtest.execute
'' Redefinir parâmetros a serem executados - você pode modificar outra peça de dados
cmdtest.parameters ("job_id") = "1"
cmdtest.parameters ("job_desc") = "teste"
cmdtest.execute
'' Redefinir parâmetros para executar
cmdtest ("job_id") = "14"
cmdtest ("job_desc") = "financeiro"
cmdtest.execute
SetRstest = cnn.execute ("SelectJob_id, Job_DescFromjobs")
Whilenotrstest.eof
Response.Writerstest (0) e rstest (1) & ""
rstest.movenext
Wend
Cnn.close: setPrmTest = nada
Setcmdtest = nada: setcnn = nada
%>
analisar:
1. O método CreateParameter do objeto de comando é usado para criar objetos de parâmetro para comandos SQL ou procedimentos armazenados. Existem cinco parâmetros no total (os cinco parâmetros são opcionais):
O primeiro parâmetro: o nome do objeto do parâmetro;
O segundo parâmetro: existem muitos tipos de tipos de dados de objetos de parâmetro. Consulte a ajuda ADO, aqui AdventChar (valor da string), Adsmallint (número inteiro assinado de 2 bytes);
O terceiro parâmetro: tipo de parâmetro. Pode ser: adparaminput (indica parâmetros de entrada), adparamOutput (indica como parâmetros de saída), adparamreturnValue (indica como valor de retorno), adparamunknown (indica que o tipo de parâmetro não pode ser determinado), adparaminputOutput (indica como entrada/saída);
O quarto parâmetro: o comprimento dos dados do parâmetro é preferencialmente especificado como igual ao comprimento do campo correspondente no banco de dados para evitar erros durante o uso. Especialmente quando o tipo de dados é Varchar, se for um tipo inteiro ou um tipo de data, o valor não é necessário;
O quinto parâmetro: o valor inicial da configuração de parâmetros.
2.cmdtest.parameters.append Método adiciona um objeto de parâmetro à coleta de dados dos parâmetros. A partir deste exemplo, você também pode ver como usar vários parâmetros.
3. A partir deste exemplo, podemos ver que você só precisa redefinir os parâmetros de entrada para executar modificações em outros dados, o que é muito conveniente. Essa idéia também é um dos métodos mais usados ao programar.
4. Redefina os parâmetros, você pode usar cmdtest.parameters ou omiti -lo para cmdtest ("job_id").
2. Use procedimentos armazenados no ASP
O que é um procedimento armazenado (um procedimento armazenado está localizado no servidor de banco de dados e é uma coleção de instruções SQL que podem conter uma ou mais instruções SQL) e como criar procedimentos armazenados não pertencem ao conteúdo desta palestra. Esta palestra ilustra principalmente como chamar procedimentos armazenados no ASP.
Os benefícios do uso de procedimentos armazenados são ótimos, que são mais eficientes do que a execução de comandos SQL em scripts ASP; Eles podem melhorar o desempenho geral e reduzir a carga de rede (reduzir a interação entre servidores de rede e servidores de dados); Eles podem otimizar o código ASP e aprimorar a flexibilidade do código, e assim por diante.
(I) Use parâmetros de entrada em procedimentos armazenados
O procedimento armazenado usado neste exemplo é "Byroyalty" que vem com o SQLServer 7.0. Uma instrução SQL dentro é muito simples. Não é nada mais do que um CreateProcedureByRoyalty adicional, e um parâmetro de entrada é @Percentage:
CreateProcedureByRoyalty@percentageInt
COMO
Selectau_idFromtitleAuthor
wheretitleauthor.royaltypeper=@Percentage
servbywww.cidu.net
Exemplo wuf71.asp
%@Idioma = vbscript%>
!-#incluirfile = "adosql7.asp"->
!-#incluirfile = "Adovbs.inc"->
%'' wuf71.asp
Dimcmdtest, prmtest, rstest
SetCmdTest = Server.CreateObject ("Adodb.Command")
cmdtest.CommandText = "Byroyalty" '' Nome do procedimento armazenado
'' Suponha que o tipo de comando seja um procedimento armazenado
cmdtest.CommandType = ADCMDStoredProc
'' Crie objeto de parâmetro
Setprmtest = server.createObject ("adodb.parameter")
'O atributo de tipo corresponde ao segundo parâmetro em wuf70.asp
prmtest.type = adinteger''4-byte assinado
A propriedade de direção corresponde ao terceiro parâmetro em wuf70.asp
prmtest.direction = adparaminput
'O atributo de valor corresponde ao quinto parâmetro em wuf70.asp
prmtest.value = 30
cmdtest.parameters.appendPrmTest
SetCmdTest.ActiveConnection = CNN
'Você precisa retornar um conjunto de registros, então use setRstest = cmdtest.execute
SetRstest = cmdtest.execute
Whilenotrstest.eof
Response.Writerstest (0) & ""
rstest.movenext
Wend
Cnn.close
SetRstest = nada: setPrmTest = nada
Setcmdtest = nada: setcnn = nada
%>
A propriedade CommandText pode especificar comandos SQL ou como procedimentos armazenados ou nomes de tabela.
Neste exemplo, a criação de um objeto de parâmetro é ligeiramente diferente de wuf70.asp. De fato, se você olhar de perto, o significado é semelhante. Existem duas propriedades neste exemplo que não são usadas: prmtest.name, prmtest.size, mais tipo, direção e valor, que correspondem aos cinco parâmetros no wuf70.asp.
(Ii) Use parâmetros de saída
Ao obter um registro de uma tabela de banco de dados ou calcular um valor, um procedimento armazenado que retorna os parâmetros de saída precisa ser usado. Para dar um exemplo, primeiro crie um novo procedimento armazenado impecável na biblioteca SQLServer Pubs. O procedimento armazenado precisa inserir duas datas e, em seguida, produzir um valor máximo.
CreateProcedureOutEmploy
(
@job_lvltinyIntoutput,
@hire_date1dateTime,
@Hire_Date2DateTime
)
COMO
Selecione@job_lvl = max (job_lvl) FROMIGLEEE
wherehire_date> =@hire_date1andhire_date =@hire_date2
Existem várias maneiras de criar procedimentos armazenados:
1. Use o Enterprisemanager da Microsoft SQLServer, abra -o no diretório de árvores à esquerda e abra -o por sua vez: consoleoot - microsoftsqlservers - sqlservergroup - iCbczjp (Windowsnt) –databases - pubs -pubs - arestorprocered -inwstoredProcedPredRoced. Depois de inserir o procedimento armazenado, ele também pode ser detectado com sintaxe;
2. Use o Queryanalyzer do Microsoft SQLSERVER, conecte -se primeiro ao servidor de banco de dados e selecione o banco de dados dos pubs. Digite o procedimento armazenado acima e clique em ExecuteQuery (ou pressione F5);
3. Usando o VB6.0, depois de abrir o menu "View"/"Data View Window", clique com o botão direito do mouse "Link de dados"/"Novo Link de dados";
4. Use o script ASP para criar procedimentos armazenados, como o wuf75.asp:
%@Idioma = vbscript%>
!-#incluirfile = "adosql7.asp"->
!-#incluirfile = "Adovbs.inc"->
%'' wuf75.asp
DIMSTRSQL
'' Nota: & Chr (10) e Ch (13) podem ser ignorados, principalmente por causa da boa aparência
Strsql = "CreateProcedureOutEmploy (@job_lvltinyIntoutput," & ch (10) & ch (13) & _
"@hire_date1dateTime,@hire_date2dateTime) como" & chr (10) & ch (13) & _
"Selecione@job_lvl = max (job_lvl) fromimploye" & _
"Wherehire_date> =@hire_date1andhire_date =@hire_date2"
Cnn.ExecutestSql
Response.Write "Crie procedimento armazenado com sucesso"
Cnn.close: setcnn = nada
%>
Depois que o procedimento armazenado for criado, além de usar o menu, você também pode excluí -lo usando a instrução SQL "DropprocedureOutemploy“
Exemplo wuf72.asp - Envie os parâmetros de entrada necessários para o procedimento armazenado e obtenha o resultado da saída.
%@Idioma = vbscript%>
!-#incluirfile = "adosql7.asp"->
!-#incluirfile = "Adovbs.inc"->
%'' wuf72.asp
Dimcmdtest, prmtest
SetCmdTest = Server.CreateObject ("Adodb.Command")
cmdtest.activeConnection = cnn
cmdtest.CommandText = "OPEMPLANTE" '' Nome do procedimento armazenado
cmdtest.CommandType = ADCMDStoredProc
'' Crie objeto de parâmetro
SetPrmTest = cmdtest.createParameter ("job_lvl", adtinyint, adparamoutput)
cmdtest.parameters.appendPrmTest
'' AdtinyInt-1 byte assinado
'' AddBdate-data Value (yyyymmdd)
SetPrmTest = cmdtest.createParameter ("Hiredate1", addbdate, adparaminput ,, "1993-05-09")
cmdtest.parameters.appendPrmTest
SetPrmTest = cmdtest.createParameter ("Hiredate2", addbdate, adparaminput ,, "1994-02-01")
cmdtest.parameters.appendPrmTest
cmdtest.execute
'As três expressões seguintes significam o mesmo
Response.WritecMdTest ("Job_LVL") & ""
Response.WritecMdTest.Parameters ("Job_lvl") & "
Response.WritecMdTest.Parameters ("Job_LVL"). Valor
Cnn.close
SetPrmTest = nada
Setcmdtest = nada: setcnn = nada
%>
(Iii) Use parâmetros de código de retorno
Use a instrução Return para retornar diferentes códigos de retorno de procedimentos armazenados. Por exemplo, o procedimento armazenado primeiro obtém um conjunto de registros e, se houver um funcionário chamado Margaret, ele retornará 1, caso contrário, ele retornará 0.
CreateProcedureReturnEmploy
COMO
SELECTEMP_ID, FNAMEFROMPLAPEE
Ifexists (selectfnameFromMploeeewherefName = '' Margaret '')
Retornar (1)
Outro
Retornar (0)
Exemplo wuf73.asp
%@Idioma = vbscript%>
!-#incluirfile = "adosql7.asp"->
!-#incluirfile = "Adovbs.inc"->
%'' wuf73.asp
Dimcmdtest, prmtest, rstest
SetCmdTest = Server.CreateObject ("Adodb.Command")
cmdtest.activeConnection = cnn
cmdtest.CommandText = "ReturnEmploy" '' Nome do procedimento armazenado
cmdtest.CommandType = ADCMDStoredProc
SetPrmTest = cmdtest.createParameter ("returnValue", adinteger, adparamreturnValue)
cmdtest.parameters.appendPrmTest
SetRstest = cmdtest.execute ()
Whilenotrstest.eof
Response.Writerstest (0) & "] [" & rstest (1) & ""
rstest.movenext
Wend
rstest.close: setRstest = nada
'' Antes de retornar CMDTest ("ReturnValue"), o rstest deve ser fechado primeiro, caso contrário, o resultado estará incorreto
IfcmdTest ("retornarvalue") = 1hen
Response.Write "tem esse funcionário"
Outro
Response.Write "sem funcionário"
Endif
Cnn.close
SetPrmTest = nada
Setcmdtest = nada: setcnn = nada
%>
3. Como lidar com big data
Os "big data" aqui se referem principalmente aos campos de texto (texto grande) e imagem (imagem). Os dados não podem ser obtidos corretamente usando os métodos descritos acima. Você deve primeiro usar tamanho = rstest (0) .ActualSize para obter o comprimento real do valor do campo e depois usar o rstest (0) .getChunk (tamanho) para obter os dados. No uso real, como esses campos são relativamente grandes, a fim de salvar e usar os recursos do servidor razoavelmente, a leitura segmentada é geralmente adotada. Exemplo wuf74.asp:
%@Idioma = vbscript%>
!-#incluirfile = "adosql7.asp"->
!-#incluirfile = "Adovbs.inc"->
%'' wuf74.asp
DIMSTRSQL, RSTEST
'Pr_info é um campo de texto
Strsql = "Selectpr_info, pub_idfrompub_info"
SetRstest = cnn.execute (strSQL)
Dimbasicsize, começa, ltext
Dowhilenotrstest.eof
Response.Writerstest (1) & ""
'1024 bytes por leitura
Basicsize = 1024
Começa = 0
WhileBeginsizerstest (0) .ActualSize
Ltext = rstest (0) .getChunk (basicsize)
BEGINSIZE = BEGENSIZE+BASICIZE
'Segmento de saída por segmento para o cliente
Response.WritelText
Wend
Response.Write ""
rstest.movenext
Laço
Cnn.close
SetRstest = nada: setcnn = nada
%>
Neste exemplo, um máximo de 1024 bytes é lido a cada vez e os lê em várias vezes. Pelo contrário, se você escrever big data no banco de dados, o método é semelhante ao acima, mas, em vez de usar o método getChunk, você usa o método AppendChunk:
rstest (0) .appendchunklText
Nota: Finalmente, apresentarei uma pequena dica sobre o banco de dados SQLServer. Se você encontrou esta situação: os dados chineses no banco de dados são exibidos em código ilegal, não entre em pânico. Você só precisa ir ao meu site para baixar o sqlsrv32.dll substituindo o arquivo com o mesmo nome em "c:/windows/system". A fonte do problema é o driver SQLServer, que normalmente está acontecendo no Windows 98 versão 2 (o número da versão do driver SQLServer é 3.70.06.23) ou o Windows 2000 ou o MDAC2.5 está instalado (o número da versão é 3.70.08.20).
O acima é um tutorial sobre o uso de armazenamento ASP. Eu acredito que você aprendeu tudo. Para mais conteúdo relacionado, continue seguindo o canal de tecnologia Wonew.