用于创建XML的经典ASP脚本

时间:2011-07-26 04:31:07

标签: xml sql-server-2005 asp-classic

我需要使用经典ASP从SQL2005 express数据库创建XML文件。我收到500错误。我相信我的问题是连接字符串,我想知道我是否能在这方面得到一个新的眼睛可能为我提供一个新的途径。这是代码:

<%
Dim objConn, strConnect, strSQL, rs, tb, objFSO, xmlFile, objWrite
xmlFile = Server.MapPath("inventory.xml")
tb = chr(9)
set objFSO  = Server.CreateObject( "Scripting.FileSystemObject" )
Set objConn = Server.CreateObject( "ADODB.Connection" )
objConn.Open "Provider=SQLOLEDB;Data Source=mybox.com;Initial      Catalog=myDB;UserId=myID;Password=myPW;"

If Not objFSO.FileExists( xmlFile ) Then objFSO.CreateTextFile( xmlFile )
set objWrite = objFSO.OpenTextFile( xmlFile, 2 )


objWrite.WriteLine("<?xml version=""1.0"" encoding=""ISO-8859-1""?>")
objWrite.WriteLine("<data>")

strSQL = "SELECT * FROM table1"
Set rs = objConn.Execute(StrSQL)


Do While not rs.EOF
objWrite.WriteLine(tb & "<marker>")
objWrite.WriteLine(tb & tb & "<name>" & rs("name") & "</name>")
objWrite.WriteLine(tb & tb & "<address>" & replace(rs("address"),"&","&amp;") & "</address>")
objWrite.WriteLine(tb & tb & "<city>" & rs("city") & "</city>")
objWrite.WriteLine(tb & tb & "<state>" & rs("size") & "</state>")
objWrite.WriteLine(tb & tb & "<zipcode>" & rs("zipcode") & "</zipcode>")
objWrite.WriteLine(tb & tb & "<lat>" & rs("lat") & "</lat>")
objWrite.WriteLine(tb & tb & "<lng>" & rs("lng") & "</lng>")
objWrite.WriteLine(tb & "</marker>")
rs.MoveNext
Loop


objWrite.WriteLine("</data>")
objWrite.Close()
%>

我感谢任何人都可以分享的新观点。 谢谢, --Matt

1 个答案:

答案 0 :(得分:0)

对我来说最突出的是你的连接字符串。我不确定它如何处理"Initial Catalog"中的额外空格,但我可以说mybox.com几乎肯定是数据源的错误值。您应该在那里使用内部名称,而不是将您的数据库暴露给公共互联网。

此外,自从我使用经典asp以来已经很长时间了,但是IIRC你需要在访问任何记录之前调用.MoveNext() - 在循环的顶部而不是底部。

最后,不要忘记关闭连接,并在那里使用良好的错误处理,以确保它将到达关闭连接和文件的代码,即使代码中较早发生错误。否则你最终会自己锁定文件或数据库。