gpt4 book ai didi

vb.net - Ado.net 遍历 SqlDataReader 行中的每一列

转载 作者:行者123 更新时间:2023-12-04 00:46:08 26 4
gpt4 key购买 nike

我正在编写一个简单的 XML 网络服务并希望返回原始 XML。我通过创建一个表示 XML 的字符串文字来做到这一点。我的数据源是一个包含存储过程调用结果的 SqlDataReader 对象。我现在的做法是使用 while 循环并从 item 属性中读取值,如下所示:

'string builder to create the literal
Dim sb As New StringBuilder()
sb.Append("<?xml version='1.0' encoding='ISO-8859-1'?>")
sb.Append("<members>")

'dr is an instance of SqlDataReader
While (dr.Read())
sb.Append("<member>")
sb.Append(String.Concat("<PersonnelID>", dr.Item("PersonnelID"), "</PersonnelID>"))
sb.Append(String.Concat("<FirstName>", dr.Item("FirstName"), "</FirstName>"))
sb.Append("</member>")
End While
sb.Append("</members>")

问题是从存储过程中返回了十几个字段,并且将它们中的每一个都写出来,这样看起来效率很低。有没有办法遍历每一行获取列名和值,所以我可以这样做:

sb.Append(String.Concat("<",ColName,">", dr.Item(ColName), "</",ColName,">"))

谁能建议我该怎么做?谢谢!

最佳答案

这应该有效(添加 using 语句只是为了完整性):

Using dr = cmd.ExecuteReader()
Dim sb As New System.Text.StringBuilder()
sb.Append("<?xml version='1.0' encoding='ISO-8859-1'?>")
sb.Append("<members>")
While (dr.Read())
sb.Append("<member>")
For i = 0 To dr.FieldCount - 1
sb.Append(String.Format("<{0}>{1}</{0}>", dr.GetName(i), dr(i)))
Next
sb.Append("</member>")
End While
sb.Append("</members>")
End Using

关于vb.net - Ado.net 遍历 SqlDataReader 行中的每一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com