|
|
|

|

|
Dicas
|

|
ASP - Active Server Page (Miscelâneas)
|
|
 |
Título da Dica: Como recuperar dados com XML AUTO do SQL 2000
|
 |
|
|
Postada em 1/10/2003 por ~Ð@®£@Ñ
O recurso de recuperação de dados já formatados como XML a partir do SQL 2000 é extremamente útil para programadores web. O XML já vem pronto, podendo ser utilizado em uma ilha de dados ou com formatação XSL .
Qualquer programador pode imaginar que basta executar a instrução SQL e imprimir o conteúdo do único campo retornado na página para desta forma gerar o XML. Mas não é tão simples.
O campo em questão é um campo do tipo TEXT, que precisa ser tratado como um stream. Isso faz com que seja necessário recupera-lo de uma forma especial :
O objeto command do ADO possui uma propriedade (propriedade dinamica) chamada "output stream". Podemos atribuir um objeto stream na propriedade "output stream" e pedir que o execute, ao invés de retornar um recordset, retorne um stream neste objeto. Precisaremos também passar um parametro a mais para o execute, que será &H00000400 .
Além disso outros 2 truques devem ser observados : A) O nome da tabela vira nome dos nós filhos ao root (representando 1 registro). Eventualmente ele precisará ser mascarado no SQL para ficar correto
B) O XML AUTO não gera o root, nós temos que gera-lo.
Veja um exemplo (em ASP) :
dim cn,rs,str set cn=createobject("adodb.connection") set cmd=createobject("adodb.command") set str=createobject("adodb.stream")
str.open
response.contenttype="text/xml"
cn.open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=."
cmd.commandtext="Select * from authors author for xml auto,elements" set cmd.activeconnection=cn cmd.properties("output stream").value=str
cmd.execute ,, &H00000400
cn.close str.position=0
response.write("<authors>") response.write(str.readtext) response.write("</authors>")
str.close set cn=nothing set cmd=nothing set str=nothing
Ainda assim essa solução pode gerar problemas de performance. Mais detalhes sobre questões de performance com XML AUTO podem ser encontrados em http://support.microsoft.com/support/kb/articles/Q280/0/67.ASP
|
|
|
|

|