Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xanburzum

[Resolvido] ASP - Usando Recordsets Desconectados,GetRows,GetString

Recommended Posts

Quando desenvolvemos Site temos que nos atentar ao desempenho que o sistema terá após finalizado, neste caso a conexão é um ponto forte.

 

 

 

Quando abrimos uma conexão com um banco de dados ela consome recursos do servidor e quanto mais tempo a conexão permanecer aberta mais recursos estarão sendo consumidos.

 

Portanto a dica é fechar o mais rápido possível as conexões usadas nos scripts.Podemos Aumentar o desempenho das aplicações, quando for necessário usar uma conexão com um banco de dados, das seguintes formas:

 

[*]Usando Recordsets Desconectados

 

[*]Usando GetRows

 

[*]Usando GetString

 

 

 

[anchor=RSDesconectado]Usando Recordsets Desconectados[/anchor]

 

Ao criarmos uma conexão com uma base de dados,geralmente criamos também uma conexão recordset, pois queremos poder fazer tratamento de dados. Se estivermos usando um recordset com um cursor lado cliente (AdUseClient) não precisamos manter está conexão aberta o tempo todo, ou seja, podemos fechar a conexão de um recordset sem fechar imediatamente o recordset.Quanto fazemos isto estamos desconectando o recordset.

 

Para desconectar um recordset precisamos apenas remover sua conexão antes de fecha - lá.

 

<%@enablesessionstate=false%>
	 
	 <%response.buffer=true%>
	 
	  
	 
	 <!–#include virtual="/adovbs.inc"–>
	 
	  <html><head>
	 
	 <TITLE>RS Desconectado</TITLE>
	 
	 </head>
	 
	 <body bgcolor="aqua">
	 
	 <% 
	 
	 ' exibe os dados de um banco de dados em uma tabela
	 
	 caminho = "C:\teste\biblio.mdb"
	 
	 conexao = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & caminho
	 
	 SQL="select PubId, Name, State , Zip from publishers where state='MA'"
	 
	  branco=" "
	 
	 nulo="-Nulo-"
	 
	  set conntemp=server.createobject("adodb.connection")
	 
	 conntemp.open conexao
	 
	  'para desconecatar um recordset ele precisar ser criado explicitamente
	 
	  set rstemp=server.createobject("adodb.recordset")
	 
	 rstemp.cursorlocation=aduseclient
	 
	 rstemp.open SQL, conntemp 
	 
	 ' esta linha desconecta o recordset imediatamente após ser aberto
	 
	 set rstemp.activeconnection=nothing
	 
	  %>
	 
	 <% comeco = now %>
	 
	 <b>Inicio => <%= formatDateTime(comeco,vbshorttime)%></b> 
	 
	 <%
	 
	 If rstemp.eof then 
	 
		response.write "Não há registros no arquivo…
   "
	 
		response.write SQL & "
   A tabela não pode ser aberta…" 
	 
		'fecha o recordset a conexão e encerra a aplicaçao   
	 
		rstemp.close
	 
		set rstemp=nothing
	 
		conntemp.close
	 
		set conntemp=nothing
	 
		response.end
	 
	  end if
	 
	  response.write "<table border='1′ bgcolor=yellow><tr>"
	 
	  'Monta o cabeçalho da tabela com o nome dos campos
	 
	 for each item in rstemp.fields
	 
		response.write "<td><b>" & item.name & "</B></TD>"
	 
	 next
	 
	 response.write "</tr>"
	 
	  DO UNTIL rstemp.eof
	 
	   response.write "<tr>"
	 
		for each item in rstemp.fields
	 
		 campo=item.value
	 
		 if isnull(campo) then
	 
			campo =nulo
	 
		 end if
	 
		  if trim(campo)="" then
	 
			campo =branco
	 
		 end if
	 
	  response.write "<td valign=top>" & campo & "</td>"
	 
	   next
	 
	   rstemp.movenext
	 
	 LOOP 
	 
	 response.write "</table>" 
	 
	 %>
	 
	 <%final= now%>
	 
	  
	 
	 <b>Fim : <%=formatDateTime(final,vbshorttime) %></b>
	 
	 <br/>
	 
	 <b>Tempo gasto : <%= formatDateTime(final-comeco,vbshorttime) %> (segundos)</b>
	 
	  </body></html>

[anchor=GetRows]Usando GetRows[/anchor]

 

O método GetRows também permite uma melhor performance quando desejamos selecionar um certo numero de registros de um banco de dados e exibi-los ao usuário.

 

O objetivo de usar o método GetRows é selecionar múltiplos registros de um recordset e armazená-los em um vetor bidimensional.A conexão é encerrada e efetuamos o tratamento do vetor com os dados recebidos.

 

A sintaxe da utilização de GetRows é a seguinte:

 

Nome_Do_Vetor = recordset.GetRows (linhas, inicio, campos)

 

Onde:

 

Nome_Do_Vetor = o nome de um vetor 2D que será criado;

 

recordset= o nome do objeto recordset;

 

linhas = indica o número de registros a selecionar.

 

O valor default é - 1 (aGetRowsRest);

 

inicio = especifica um valor do Bookmark para o registro do qual GetRows irá iniciar;

 

campos= representa a posição ordinal ou nome do campo ou um vetor de campos.

 

GetRows é usado para copiar registros de um recordset para um valor bidimensional. O primeiro item do valor identifica os campos (colunas) e o segundo item identifica os registros (linhas).

 

A variável associada ao vetor tem seu tamanho alocado dinamicamente quando da seleção de registros, se não for informado o valor do argumento linhas, GetRows retorna todos os registros do recorset e se for solicitado mais registros do que o disponível, GetRows retorna somente a quantidade existente. Para restringir os campos seleciomados , você pode passar como argumento o nome do campo ou o seu numero ou ainda passar como argumento um vetor de campos/números.

 

Após o GetRows retornar os registro do recordset o próximo registro não lido se torna o registro atual, ou se não há mais registros , a propriedade EOF é definida como True.

 

<HTML>
	 
		 <HEAD>
	 
		 <TITLE>GetRows</TITLE>
	 
		 </HEAD>
	 
		 <BODY BGColor=ffffff Text=000000>
	 
		 <%
	 
		 Set cn = Server.CreateObject("ADODB.Connection")
	 
		 cn.Open Application("guestDSN")
	 
		 sql = "SELECT * FROM authors"
	 
		 Set RS = cn.Execute(sql)
	 
		 ary = rs.GetRows(10) 
	 
		 rs.close
	 
		 cn.close
	 
		 %>
	 
		 <P>
	 
		 <TABLE BORDER=1>
	 
		 <% 
	 
		 nRows = UBound( ary, 2 )
	 
		 For row = 0 to nRows %>
	 
		 <TR>
	 
		 <% For col = 0 to UBound( ary, 1 ) %> 
	 
		 <TD><%= ary( col, row ) %> </TD>
	 
		 <% Next %>
	 
		 </TR>
	 
		 <% Next %>
	 
		 </TABLE>
	 
		 </HTML>

[anchor=GetString]Usando GetString[/anchor]

 

O método GetString nos permite buscar um dado do conjunto de registros em um uico string.A sintaxe geral é a seguinte:

 

variavel = recordset.getstring ( [stringformat] , [NumRows] , [ColumnDelimeter], [RowDelimeter] , [NullExpr] )

 

O parametro stringFormat especifica o formato no qual o conjunto de registros deve ser retornado. O único valo válido para isto é adClipString (que ,obviamente, é o default). Nós podemos dizer ao ADO quantas linhas busacar no string atraves do parametro NumRows ( o default é retornar todas as linhas). Todas as linhas são separadas pelo caracter especificado no parâmetro ColumnDelimeter ( o caracter tab é o default).Todas as linhas são separadas pelo caracter especificado no parâmetro RowDelimeter ( oretorno de carro é o default). Finalmente, o parâmetro NullExpr é uma expressão usada no lugar fr um valor NULL ( o default é uma string vazia).Abaixo dois exemplos:

 

' Pega todas as linhas de adados separadas por tabs e retorno de carro / avanço de linha

 

strdados = objrs.GetString (adClipString, , , vbCrLf)

' Pega 10 linhas de dadosseparadas por ponto e virgula e pipes

 

strdados = objrs.GetString (adClipString,10, ";" , "|")

 

 

Este método é particularmente efetivo quando querermos popular, vamos dizer, um quadrode texto ou criar uma tabela.Isto fornece aindaoutra opção quandp precisamos passar os dados de volta para um cliente que não aceita um objeto RecordSet, como um navegador Netscape. Podemos embutir o string em um quador de texto escondido se for necessário, para mandá-lo para o cliente. Depois, podemos usar o script do lado cliente para analisar os dados.

 

É isso ae, galera, até a próxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.