0

好吧,我想做一些好事(对我来说很好,对你们来说很简单),有人告诉我我可以做到,但我不知道从哪里开始。我在一个页面中有两个 DDL,我需要在 page_load 上填充两者,每个都从不同的表中获取数据,它们之间没有关系(供应商/类别)。我知道如何使用两个数据库连接来完成,这很容易,但有人告诉我我可以使用一个连接来完成。没有人告诉我是只有联合的连接还是 SP 处理一个 SP 中的两个表(对我来说,我只用一个 SP 就可以做到这一点似乎不合逻辑……但我知道什么。 .lol)谢谢,埃雷兹

4

3 回答 3

1

您可以在 SP 中运行这两个查询:

你的_sp

  select * from table1;
  select * from table2;

然后在 C# 端,打开数据读取器,您可以使用 reader.NextResult() 方法移动到结果集中的下一个结果。

while (reader.Read())                                              
{                                                                  
   // process results from first query                             
}                                                                  

reader.NextResult();                                               
while (reader.Read())                                              
{                                                                  
   // process results from second query                            
}                                                                  
于 2009-11-20T13:27:28.160 回答
0

我认为你可以用分号分隔你的 SQL 语句。
例如SELECT myColumns FROM Suppliers; SELECT otherColumns FROM Categories

您可以以常规方式打开数据读取器。

完成读取第一个结果集的所有数据后,您可以调用NextResult它将尝试执行下一条语句并为您提供第二个结果集的读取器。

注意:我没有这样做。但这就是我可以从文档中得出的结论。

于 2009-11-20T13:27:53.840 回答
0

不完全是我这样做的方式(我会使用 2 个对象数据源);但如果您真的只想使用 1,请执行以下操作:

创建一个包含 2 个 select 语句的 sql 语句;并将其加载到 C# 数据集中。
将您的第一个 ddl 绑定到 DataSet.Tables[0]。
将您的第二个 ddl 绑定到 DataSet.Tables[1]。

你去吧。1个连接。

编辑:如果你真的想使用 DataReader ...

您可能需要 2 个 SELECT 语句,并带有一个附加字段来区分您要插入的 DDL。所以; 像这样的东西:

从 dbo.Table1 中选择“表 1”作为表名、名称、值

联盟

从 dbo.Table2 中选择“表 2”作为表名、名称、值

然后无论您使用哪种方法将项目加载到 DDL 中,检查表名以查看将其添加到哪个表中

于 2009-11-20T13:21:32.007 回答