2

我正在使用 ADO.NET 来执行存储过程。存储过程有多个选择语句。当我访问 DataSet 时,表被命名为 Table1、Table2 等。我想为这些表中的每一个提供用户朋友的名称。我不想在我的 SQL 查询中使用表变量或临时表。我还有其他选择吗?

我正在使用以下代码来获取数据集

SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();

DataSet ds = new DataSet();
try
{
    con.ConnectionString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
    con.Open();
    cmd = new SqlCommand("sp_GetData", con);
    cmd.Parameters.Add(new SqlParameter("@ParamOne", param));
    cmd.CommandType = CommandType.StoredProcedure;
    da.SelectCommand = cmd;
    da.Fill(ds);

}

我也不想这样做

da.TableMappings.Add("Table", "MyTable1");
da.TableMappings.Add("Table1", "MyTable2");
da.TableMappings.Add("Table2", "MyTable3");

或这个

ds.Tables[0].TableName = "NametbA";
ds.Tables[1].TableName = "NametbB";

最好我想在 SQL 查询中指定名称。我想使用这种方法的原因是,我会将这个数据集作为它传递给一个将表名写入文件的函数。

请提供您的建议。

谢谢

4

2 回答 2

1

不幸的是,无法自动设置它。您必须以某种方式将其提供给代码。

一种选择是将结果的结构更改为具有两倍的结果集,其中奇数是名称,偶数是数据:

-- Table name
SELECT 'nameoftable' AS TableName

-- Data
SELECT * FROM ...

c#代码(认为是伪代码):

myDataSet.Tables[1].TableName = myDataSet.Tables[0]["TableName"].ToString();
于 2013-09-01T16:45:59.813 回答
-1

ADO.Net 数据集对象中的表名完全是 .Net、C#(或 vb.net)特定的。它们与 SQL 查询或数据库中的表名无关。在 C# 代码中更改它们,只需编写

 myDataSet.Tables[0].TableName 'WhateverYouWant";
于 2013-09-01T15:34:18.990 回答