【发布时间】:2011-06-11 07:08:36
【问题描述】:
我有一个存储过程,它返回大约 5 个表,我返回它们是这样的:
select <fields> from Products where ProductId = @ProductId
select <fields> from RelatedProducts where ProductId = @ProductId
select <fields> from MetaData where ProductId = @ProductId
嗯,你明白了要点。现在在数据集中,如果我这样做:
DataSet ProductDs = DAL.RetreiveProductMetadata(someInteger);
ProductName = DataSet.Tables["Products"].Rows[0]["columnName"].ToString();
它抛出了一个异常......好吧,错误说 TableName 是 null 并且在调试时,表名实际上被命名为“Results1”、“Results2”等等。
我尝试将存储过程更改为:
select * From products AS Products
没有效果。
如何让 C# 检测和使用数据库中的表名?
ps:我在现场有各种各样的 Coalesces 和案例,应该不会有问题吧?
此外,尝试谷歌搜索和敲击头部 - 均未奏效。
【问题讨论】:
-
当您尝试使用 int 索引表时会发生什么?
-
当然可以,但是我尝试通过名称访问它们的目的纯粹是为了便于阅读,这样我以后就不会与 table[0] 和 [1] 混淆(或将来在我的代码上工作的任何其他编码人员)
-
另一个愚蠢的问题:您是否尝试输入小写的表名?我记得过去有过类似的问题,但不太清楚我是如何解决的,尽管我似乎记得一些关于区分大小写的事情。
-
嗯,关键是,当我调试时,数据集将表名显示为“Results1”.. 所以情况不会有任何不同吧?无论如何我都会试试,以防万一
-
不,不走运,正如我所说,DataSet 没有任何表名信息
标签: c# sql-server stored-procedures dataset