在TSQL中创建的XML用作ADODB.Recordset

时间:2013-08-13 13:47:38

标签: sql-server xml vb.net tsql adodb

我正在尝试将从MS SQL数据库中的存储过程生成的XML用作VS2005应用程序中的Recordset。我遇到的问题是,当以字符串形式读取xml时,字符串结果将以“System.Byte []”形式出现。看到这一点,我将数据类型从String更改为Byte()并尝试使用Byte数组。字节数组似乎与我想要接收的数据无关。我想知道是否有办法处理我不知道的SQL生成的XML文件。这是一些示例代码。

这是在SQL SMS

中存储过程的结果

enter image description here

使用此代码,我将System.byte []作为我的字符串:

Dim ADOrs As ADODB.Recordset
Dim SQLString1 As New System.Text.StringBuilder(180)
Dim catzzz as String

SQLString1.Append("exec reports_selectReportMetaData @companyCode = '001'")

ADOrs = fnReturnRecordset(SQLString1.ToString) 'function executes the query

Do While Not ADOrs.EOF
    catzzz = ADOrs("XML_F52E2B61-18A1-11d1-B105-00805F49916B").Value.ToString
    Debug.WriteLine(catzzz)
Loop

这是我获得真正奇怪的字节数组的方式

Dim ADOrs As ADODB.Recordset
Dim SQLString1 As New System.Text.StringBuilder(180)
Dim catzzz As Byte()

SQLString1.Append("exec reports_selectReportMetaData @companyCode = '001'")

ADOrs = fnReturnRecordset(SQLString1.ToString)'function executes the query

Do While Not ADOrs.EOF
    catzzz = ADOrs("XML_F52E2B61-18A1-11d1-B105-00805F49916B").Value           
Loop

Byte数组看起来像 enter image description here

使用

转换为ASCII时
catX = System.Text.Encoding.Default.GetString(catzzz)

前三个字符(应为<rt)出现为

enter image description here

所以我认为我的主要问题是我错过了引入SQL中创建的XML的正确方法

任何想法都会被批评!

1 个答案:

答案 0 :(得分:0)

结束从存储过程到函数的更改,这样我们就可以返回一个值,而不是只执行命令。这解决了System.Byte[]问题。