【发布时间】:2010-10-10 01:14:45
【问题描述】:
我有以下存储过程
Create procedure psfoo ()
AS
select * from tbA
select * from tbB
然后我以这种方式访问数据:
Sql Command mySqlCommand = new SqlCommand("psfoo" , DbConnection)
DataSet ds = new DataSet();
mySqlCommand.CommandType = CommandType.StoredProcedure;
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
mySqlDataAdapter.SelectCommand = mySqlCommand;
mySqlDataAdapter.Fill(ds);
现在,当我想访问我的表时,我必须这样做:
DataTable datatableA = ds.Tables[0];
DataTable datatableB = ds.Tables[1];
数据集 Tables 属性也通过字符串(而不是 int)获得访问器。
是否可以在 SQL 代码中指定表的名称,以便我可以改为这样写:
DataTable datatableA = ds.Tables["NametbA"];
DataTable datatableB = ds.Tables["NametbB"];
我使用的是 SQL Server 2008,如果这会有所不同的话。
【问题讨论】:
-
很好的问题。太糟糕了,从答案来看,这似乎是不可能的。能够为过程中的查询提供别名并将其用作生成的 DataTable 的 TableName 将是一个很好的功能。不得不依赖在过程中执行查询的顺序很糟糕,因为将来有人可能会修改过程并在不知不觉中破坏您的代码。
-
@Jim 看到 Ramzan 的回答。除了让 Microsoft 添加从 SP 命名表的功能之外,这似乎是可行的方法,尤其是如果您像我的团队那样将数据访问代码包装在实用程序类中。
标签: .net sql sql-server dataset