【问题标题】:Print more than one result in SQL Data Reader在 SQL 数据阅读器中打印多个结果
【发布时间】:2017-11-06 07:27:14
【问题描述】:

我有一个存储过程,它将从表中返回多个值。但是,我只能打印 1 个结果,有人可以告诉我我做错了什么

vb.net 代码

reader = cmd_loadMacro.ExecuteReader()
        reader.Read()
        MacroKey = reader.GetString(0)
        MacroValue = reader.GetString(1)

当我执行 SSMS 时,我的查询确实返回了结果,我应该返回 5 行,但只返回 1 行

最新尝试(返回 0 个结果)

`reader.Read()

        If reader.HasRows Then
            While reader.Read()
                MacroKey = reader.GetString(0)
                MacroValue = reader.GetString(1)
            End While
        End If`

【问题讨论】:

标签: sql vb.net stored-procedures sqldatareader


【解决方案1】:

删除循环周围的If reader.HasRows Then 位,然后重试。

我在 reader.HasRows 上遇到过问题,过去返回了意想不到的结果。

【讨论】:

  • 虽然循环根本没有显示任何结果。如果我在没有任何“if”或“while”语句的情况下执行代码,我将获得 1 行,我想获得所有 5 行。
  • @aridi - 您必须为每一行调用Read。这就是为什么你需要一个循环。
  • @aridi 请您使用所有相关代码更新您的问题。
【解决方案2】:

我在我的主类中使用了一个 for 循环,并将它传递给函数。这完美无缺。

MacroKey = reader.GetString(0)
                MacroValue = reader.GetString(1)
                writer.WriteStartElement("djmacros") ' Root.
                writer.WriteStartElement("macro")
                writer.WriteAttributeString("name", MacroKey)
                writer.WriteAttributeString("type", "1000")
                writer.WriteAttributeString("value", MacroValue)
                writer.WriteEndElement()

                While reader.Read
                    MacroKey = reader.GetString(0)
                    MacroValue = reader.GetString(1)
                    writer.WriteStartElement("macro")
                    writer.WriteAttributeString("name", MacroKey)
                    writer.WriteAttributeString("type", "1000")
                    writer.WriteAttributeString("value", MacroValue)
                    writer.WriteEndElement()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2019-12-23
    • 1970-01-01
    • 2023-04-01
    • 2017-11-27
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多