0

我正在尝试从 DB2 数据库中的表中检索 XML 列。使用下面的代码,我可以检索任何没有 xml 作为数据类型的列:

query = "some query"  
strConn = "my connection string"  
set dbConn = CreateObject("ADODB.Connection")  
set rs = CreateObject("ADODB.RecordSet")  
dbConn.Open strConn  
rs.Open query, dbConn  

rs.MoveFirst  
While Not rs.EOF  
 data = rs.Fields(0)  
 rs.MoveNext  
Wend  
dbConn.Close  

当数据是 xml 数据类型时,“data = rs.Fields(0)”行会引发“未指定错误”。我想既然记录集返回一个 XML 对象,我需要将它分配给这样的 DOM 对象:

Set xDOM = CreateObject("Microsoft.XMLDOM")  
rs.Save xDOM, adPersistXML  

但这仍然不起作用,QTP 在执行保存行时会引发“未指定的错误”。

我用谷歌搜索了答案,但找不到任何有用的东西。有没有人成功地做到了这一点?

感谢您阅读我的问题。

4

1 回答 1

0

根据DB2 - .NET 数据类型,DB2Xml 映射到 Byte()/Blob。因此,也许您可​​以像盖茨先生处理图片一样处理您的 XML 字段,例如:

Set cn = New ADODB.Connection   ---> CreateObject("ADODB.Connection")
cn.Open "DB2 Connection String"

Set rs = New ADODB.Recordset    ---> CreateObject("ADODB.Recordset")
rs.Open "Your SQL", cn, adOpenKeyset, adLockOptimistic ---> Const defines needed

Set mstream = New ADODB.Stream ---> CreateObject("ADODB.Stream")
mstream.Type = adTypeBinary ---> Const define needed
mstream.Open
mstream.Write rs.Fields("Your XML field").Value
mstream.SaveToFile "fullfilespec.xml", adSaveCreateOverWrite ---> Const define needed

rs.Close
cn.Close

(显然未经测试的空气代码)

PS你rs.Save xDOM, adPersistXML完全错了;.Save 将整个记录集保存到指定为第一个参数的文件中。

于 2013-01-11T15:47:22.947 回答