【问题标题】:Giving table friendly name in SQL query using MS SQL server使用 MS SQL 服务器在 SQL 查询中提供表友好名称
【发布时间】:2013-09-04 18:37:01
【问题描述】:

我正在使用 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 查询中指定名称。我想使用这种方法的原因是,我会将这个数据集作为它传递给一个将表名写入文件的函数。

请提供您的建议。

谢谢

【问题讨论】:

标签: c# .net sql-server ado.net dataset


【解决方案1】:

很遗憾,无法自动设置它。您必须以某种方式将其提供给代码。

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

-- Table name
SELECT 'nameoftable' AS TableName

-- Data
SELECT * FROM ...

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

myDataSet.Tables[1].TableName = myDataSet.Tables[0]["TableName"].ToString();

【讨论】:

    【解决方案2】:

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

     myDataSet.Tables[0].TableName 'WhateverYouWant";
    

    【讨论】:

    • 您可能想查看 OP 问题的底部,清楚地说明他不想要什么。这实际上就是其中之一。
    • 感谢您的回复。但我希望在 SQL 查询中指定该名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2023-02-25
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多