Recomendado: Use ASP para chamar visualizações e procedimentos armazenados no banco de dados 1. Prefácio ASP (Páginas de servidor ativo) é um ambiente de script do lado do servidor, suportado pelo IIS3.0 da Microsoft ou acima. Ele pode ser usado para criar páginas dinâmicas da Web ou gerar aplicativos da Web poderosos. As páginas ASP incluem tags HTML, texto e
O que é exibição de paginação quando o ADO acessa bancos de dados? Se você usou o programa de placas de avisos eletrônicos em muitos sites atualmente, deve saber que, para melhorar a velocidade de leitura da página, o programa de quadro de avisos eletrônicos geralmente não liste todas as postagens em uma página, mas as divide em várias páginas para exibir um certo número de postagens por página, como 20 postagens. Esta é a exibição de paginação de consultas de banco de dados. Se você ainda não entende, entenderá os resultados da consulta de mecanismos de pesquisa como o Yahoo.
Então, como podemos pagar os resultados da consulta do banco de dados? Na verdade, existem muitas maneiras, mas existem duas maneiras principais:
1. Leia todos os registros no banco de dados que atendem às condições de consulta no registro de uma só vez e armazene -os na memória. Em seguida, gerencie o processamento de paginação por meio de vários atributos fornecidos pelo objeto ADO RecordSet que suporta especificamente o processamento da paginação: PageSize (tamanho da página), PageCount (número da página) e AbsolutePage (Páginas absolutas).
2. De acordo com as instruções do cliente, o número especificado de registros deve ser lido e exibido a partir dos registros que atendem às condições de consulta a cada vez.
A principal diferença entre os dois é que o primeiro lê todos os registros na memória de uma só vez e, em seguida, faz julgamentos e análises em sequência de acordo com as instruções para alcançar o efeito da exibição da paginação, enquanto o último faz julgamentos com base nas instruções e lê o número especificado de registros que atendem às condições de consulta na memória, cumprindo diretamente a função da paginação.
Podemos sentir claramente que, quando o número de registros no banco de dados atingir dezenas de milhares ou mais, a eficiência da execução do primeiro método será significativamente menor que a do segundo método, porque quando cada cliente consultar a página, todos os registros que atendem aos critérios devem ser armazenados na memória do servidor e, em seguida, a paginação e outros processos são transportados. Se mais de 100 clientes quiserem on -line ao mesmo tempo, a eficiência da execução do aplicativo ASP será bastante afetada. No entanto, quando o número de registros no servidor e o número de pessoas on -line ao mesmo tempo não são muito grandes, a eficiência da execução dos dois é quase a mesma. No momento, o primeiro método é geralmente adotado, porque a redação do programa ASP do primeiro método é muito mais simples e clara que o segundo método.
Aqui, o autor tomará nosso programa Comum ASP BBS como exemplo para analisar como implementar a função de exibição de paginação no programa BBS. Como o número de registros de banco de dados e o número de pessoas que acessam simultaneamente no programa BBS que geralmente usamos não são demais, portanto, os exemplos do programa a seguir são o primeiro método de exibição de paginação introduzido anteriormente.
A exibição da paginação quando o ADO acessa o banco de dados é realmente para operar os registros do RecordSet. Portanto, devemos primeiro entender as propriedades e métodos do objeto Reordset:
Atributo BOF: o indicador atual refere -se à primeira transação para o registro.
Atributo EOF: O indicador atual refere -se à última transação para o registro.
Método de movimentação: mova métricas para um registro no registro.
Propriedade AbsolutePage: define o local atual do registro em que a página está localizada. Propriedade absoluta: a localização atual da métrica no conjunto de registros.
Propriedade do PageCount: exibe quantas páginas de dados um objeto RecordSet contém.
Pagesize Propriedade: Exibe o número de registros exibidos em cada página do objeto RecordSet.
Propriedade do RecordCount: exibe o número total de registros do objeto RecordSet.
Vamos dar uma olhada mais de perto nesses atributos e métodos importantes.
1. BOF e EOF Atributos
Geralmente, escrevemos código em um programa ASP para verificar os atributos BOF e EOF para conhecer a localização do registro apontado pelo indicador atual. Usando os atributos BOF e EOF, podemos saber se um objeto RecordSet contém registros ou se a linha de registro móvel excedeu o escopo do objeto RecordSet.
como:
< % se não Rs.eof então ... %>
< % se não (Rs.BOF e Rs.eof) %>
Se a posição de registro atual for antes da primeira linha de um objeto RecordSet, a propriedade BOF retornará true, caso contrário, retornará falsa.
Se a posição de registro atual estiver após a última linha de um objeto RecordSet, a propriedade EOF retornará true, caso contrário, ele retornará falsa.
BOF e EOF são falsos: significa que o indicador está localizado no conjunto de registros.
O BOF é verdadeiro: o indicador atual refere -se ao primeiro registro ao registro. O EOF é verdadeiro: o indicador atual refere -se ao último registro ao registro.
BOF e EOF são verdadeiros: não há registro no registro.
2. Método de movimentação
Você pode usar o método de movimentação para mover métricas para um registro no registro, com a sintaxe da seguinte maneira:
rs.move numRecords, start
Aqui RS é uma variável de objeto, indicando um objeto RecordSet que deseja se mover quando a posição de registro atual; O NumRecords é uma fórmula de cálculo de números positivos e negativos que define o número de movimentos da posição de registro atual; O Start é um item opcional para especificar o rótulo para o início do registro.
Todos os objetos RecordSet suportam o método de movimentação. Se o parâmetro numRecords for maior que zero, a posição de registro atual se moverá para o final; Se for menor que zero, a posição de registro atual se moverá para o início; Se um objeto RecordSet vazio chamar o método de movimentação, um erro será gerado.
Método Movefirst: Mova a posição de registro atual para o primeiro registro.
Método MoveLast: Mova a posição de registro atual para o último registro.
Método Movenext: Mova a posição de registro atual para o próximo registro. MOVILHO MOVEPEIRIO: Mova a posição de registro atual para o registro anterior.
MOVE [N] Método: Mova o índice para o enésimo registro da caneta, n começa em 0.
3. Atributos AbsolutePage
A propriedade AbsolutePage define o número da página de páginas em que página o registro atual está localizado; Use a propriedade PageSize para dividir o objeto RecordSet em páginas lógicas, e o número de registros para cada página é o PageSize (exceto a última página que pode ter menos do que Pagesize Records). Deve -se notar aqui que nem todos os provedores de dados suportam essa propriedade; portanto, tenha cuidado ao usá -lo.
O mesmo que a propriedade AbsolutePosition, a propriedade AbsolutePage começa com 1. Se o registro atual for a primeira linha do registro, o AbsolutePage é 1. A propriedade AbsolutePage pode ser definida para passar para a primeira posição de registro da linha de uma página especificada.
4. Propriedade da Absosidade Absos
Se você precisar determinar a localização atual da métrica no registro, poderá usar a propriedade AbsolutePosition.
O valor da propriedade AbsolutePosition é a posição do indicador atual em relação à primeira transação, que começa em 1, ou seja, a absoluta deposição da primeira transação é 1.
Observe que, ao acessar os registros, não há garantia de que os registros apareçam na mesma ordem todas as vezes.
Para ativar a absoluta, você deve primeiro configurá -lo para usar o cursor do usuário (ponteiro), e o código ASP é o seguinte:
rs2.cursorlocation = 3
5. Propriedade de PageCount
Use a propriedade PageCount para determinar quantas páginas de dados um objeto RecordSet contém. A página aqui é uma coleção de registros de dados e seu tamanho é igual à configuração da propriedade PageSize. Mesmo que o número de registros na última página seja menor que o valor do PageSize, a última página é considerada uma página do PageCount. Deve -se notar que nem todos os provedores de dados suportam essa propriedade.
6. Pagesize atributo
A propriedade PageSize é a chave para determinar como os paginatos de ADO ao acessar bancos de dados. Usando -o, você pode decidir quantos registros formam uma página lógica. Define e cria um tamanho de página, permitindo que a propriedade AbsolutePage seja movida para o primeiro registro de outras páginas lógicas. A propriedade PageSize pode ser definida a qualquer momento.
7. Propriedade do registro
Esta também é uma propriedade muito comum e importante. Frequentemente usamos a propriedade RecordCount para descobrir quantos registros um objeto RecordSet contém. Por exemplo: < %TOTLE = Rs.RecordCount %> Depois de entender as propriedades e métodos acima do objeto RecordSet, vamos considerar como usá -los para alcançar o objetivo de nossa exibição de paginação. Primeiro, podemos definir um valor para a propriedade PageSize, especificando assim o número de linhas que constituem uma página retirada do grupo de registros; Em seguida, use a propriedade RecordCount para determinar o número total de registros; Em seguida, divida o número total de registros por Pagesize para obter o número total de páginas exibidas; Finalmente, o acesso às páginas especificadas pode ser concluído através da propriedade AbsolutePage. Parece muito complicado. Vamos dar uma olhada em como o programa deve ser implementado?
Criamos um aplicativo BBS tão simples, que possui os cinco campos a seguir em seu banco de dados: ID, o número automático de cada postagem; sujeito, o assunto de cada post; nome, o nome do usuário que adicionou a postagem; Email, o endereço de e -mail do usuário; PostDate, o tempo de adicionar a postagem. O DSN do banco de dados é BBS. Colocamos todas as etapas na exibição de Post Paging em um processo chamado Showlist () para facilitar a chamada. O procedimento é o seguinte:
| A seguir, o conteúdo citado: /'---- BBS Show Post Paging ---- < %Sublist () %> < % PGSZ = 20 /'Set Switch, especifique o número de postagens exibidas em cada página, o padrão é de 20 postagens por página Definir Conn = Server.CreateObject (Adodb.Connection) Set rs = server.createObject (adodb.recordset) SQL = Selecione * FROM ORDEM DE MENSAGEM POR ID DESC /'Consulte todas as postagens e organize -as em ordem inversa por pós -identificação Conn.Open bbs Rs.Open SQL, Conn, 1,1 Se rs.RecordCount = 0 então Response.write <p> <Center> Desculpe, não há informações relevantes no banco de dados! < /central> </p> outro Rs.pagesize = cint (pgsz) /'Defina o valor da propriedade PageSize Total = int (rs.recordCount / pgsz * -1) * -1 / 'Calcule o número total de páginas que podem ser exibidas Pageno = solicitação (pageno) se pageno = então Pageno = 1 outro Pageno = Pageno 1 Pageno = Pageno-1 final se Scrollaction = Solicitação (rolagem) Se Scrollaction = página anterior, então Pageno = Pageno-1 final se Se Scrollaction = Próxima página então Pageno = Pageno 1 final se Se pageno <1 então Pageno = 1 final se n = 1 Rs.absolutePage = pageno Response.Write <Center> posição = rs.pagesize*pageno PageBegin = POSITION-RS.PAGESIZE 1 Se posição <rs.RecordCount então pagend = posição outro pagend = Rs.RecordCount final se Response.write <p> <font color =/'Navy/'> <b> Resultados da consulta do banco de dados: </b> Response.write (há um total de & rs.recordCount e informações que atendem às condições, exibição e pagebegin &-& pagend &) </font> </p> Response.write <tabela largura = 600 borda = 1 celularpadding = 4 cellspacing = 0 bgcolor =#ffffff> Response.write <tr bgcolor =#5fb5e2> <font size = 2> <td> <b> tópico </b> </td> <td> <b> usuário </b> </td> <td> <b> email </b> < /td> <td> <b> publicado < /b> Faça enquanto não (RS não é nada) RowCount = Rs.Pagesize Faça, embora não seja rs.eof e rowcount> 0 Se n = 1 então Response.write <tr bgcolor =#ffffff> OUTRO Response.write <tr bgcolor =#eeeee> Final se n = 1-n %> <Td> <span style = font-size: 9pt> <a href = /'View.asp? Key = < % = rs (id) %> /'> < % = rs (sujeito) %> <Td> <span style = font-size: 9pt> < % = rs (nome) %> < /a> < /span> < /td> <Td> <span style = font-size: 9pt> <a href = Mailto: < % = rs (email) % >> < % = rs (email) %> < /a> </span> </td> <Td> <span style = font-size: 9pt> < % = rs (pós-date) %> </span> </td> </tr> < % RowCount = RowCount - 1 Rs.movenext Laço Definir rs = rs.nextrecordset Laço Conn.Close Definir rs = nada defina conn = nada %> < /Tabela> <Form Method = get Action = list.asp> <Tipo de entrada = Nome oculto = Pageno Value = < % = Pageno % >> < % Se Pageno> 1 então Response.Write <Tipo de entrada = Nome de envio =/'scrollaction/' value =/'página anterior/'>> final se Se RowCount = 0 e Pageno <> Total então Response.Write <Tipo de entrada = Nome de envio =/'scrollaction/' value =/'Próxima página/'>> final se Response.write </morm> Final se %> < % Final sub %> |
Acredito que todos devem ser capazes de entender completamente o programa acima, para que o autor não o explique em detalhes aqui. Vale a pena notar que um pequeno truque foi usado neste programa, <Tipo de entrada = Nome oculto = Pageno Value = < % = Pageno % >>, que é uma passagem secreta usada para passar dados sempre que o arquivo ASP é chamado. Como precisamos passar os parâmetros que representam o número atual da página sempre que o programa é chamado, você pode pensar em usar a sessão, mas em termos de salvar recursos do sistema e universalidade, o uso de um formulário tão oculto para passar dados alcançará melhores resultados.
Ok, é hora de dizer adeus novamente. Se você não entender completamente os programas listados neste artigo, deverá adicionar algum combustível à gramática do VBScript; Se você tiver algumas perguntas, posso fazer o possível para respondê -las; Se você tiver alguma sugestão melhor, envie -me uma carta.
Compartilhar: Gere páginas da web estática substituindo tags Todo mundo sabe que as páginas da Web estática HTML têm maior probabilidade de serem indexadas pelos mecanismos de pesquisa. As páginas da Web HTML de geração dinamicamente também podem aumentar o número de páginas da Web no site, e os mecanismos de pesquisa também podem incluir mais. Qual é o sentido de melhorar a qualidade das páginas da web? Eu acho que todo mundo sabe disso também. para