c#/ sql-server,尝试从两个表中获取数据到两个ddl ...在一个sqlDataReder中

时间:2009-11-20 13:10:16

标签: c# sql-server stored-procedures sqldatareader

好吧,我想做一些好事(对我很好,对你们来说很简单),我被告知我可以做到,但我不知道从哪里开始。 我在一个页面中有两个DDL,我需要在page_load上进行popolate,每个都从不同的表中获取数据而它们之间没有相关性(供应商/类别)。我知道如何使用两个数据库连接,这很容易,但我被告知我可以通过一个连接来完成它。 我没有被告知是否只有联合或者SP在一个SP中处理两个表(对我来说似乎不合理,我只能使用一个SP ...但我知道什么。 。大声笑) 谢谢, 埃雷兹

3 个答案:

答案 0 :(得分:1)

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

your_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                            
}                                                                  

答案 1 :(得分:0)

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

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

你去吧。 1个连接。

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

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

SELECT'Table1'AS TableName,Name,Value 来自dbo.Table1

UNION

SELECT'Table2'AS TableName,Name,Value 来自dbo.Table2

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

中的项目名称。

答案 2 :(得分:0)

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

您可以定期打开datareader。

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

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