【问题标题】:getting multiple sets of data in one request?在一个请求中获取多组数据?
【发布时间】:2011-06-04 12:18:22
【问题描述】:

我正在一个站点上工作,当用户登录(第一个数据库请求)时,存储过程会验证密码和用户 ID,然后返回我放入会话中以供下一步使用的用户记录。

在这之后我做了第二个数据库请求。它返回我放入缓存中的用户地址。

您能否指导我是否有某种方法可以在一个数据库请求中获取两组数据(用户记录和第二个表中的地址)。

请指导我,我正在使用 DAAB(​​进入奖品库)进行数据访问。

谢谢

【问题讨论】:

    标签: c# asp.net c#-3.0 c#-2.0 daab


    【解决方案1】:

    修改您的具有多个 select 语句的 SP,如您的情况是 2。一个 SP 中的两个 select 语句将返回两个记录集。在 SQL Management Studio 中验证,当您运行 SP 时,它应该在底部面板中显示多个 Grid。

    SP 完成后,从 C# 代码调用 SP 并将结果加载到 DataSet 中。数据集将有两个表,您可以从不同的表中获取数据

    【讨论】:

    • 感谢您的指导。我没有使用数据表或数据集。我正在使用自定义对象。可以使用自定义对象来完成吗?请建议。
    • SP 不返回自定义对象,您将结果从数据库加载到自定义对象中。 DAAB 返回单个值或 DataReader 或 DataSet。获得数据集后,您可以将数据集中的数据加载到您的自定义对象中
    • 有什么办法可以用 DataReader 做到吗?
    • 当然,您应该可以使用 dataReader.NextResult() 来获取下一个结果集。
    【解决方案2】:

    您可以在存储过程中编写两个选择查询,或者 依次执行两个查询。在单个查询中,您可以执行和接收 DataSet 中的数据。

    ExecuteDataset()

    因此数据集内将返回两个表。你可以得到像

    dataset.tables(0) dataset.tables(1)

    谢谢

    【讨论】:

    • 感谢指导和分享。我使用的是自定义对象,而不是数据集或数据表。你能不能再帮忙一点。
    【解决方案3】:

    一次检索两个结果集将一无所获,但代码会变得更加不连贯。为什么您需要将两个逻辑上独立的操作合并为一个?您可以使用 join 一次性获取包含所有数据的结果集,而不是使用这种有问题的方法,但这似乎仍然是错误的。我看不出一个干净的方式来做你所要求的事情以及可能获得的任何好处。

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多