繁体   English   中英

在SQL Query中如何设置表名

[英]In SQL Query how to set table name

我使用C#。 我用sql查询的结果填充数据集。 假设ds是我的数据集:

Dataset ds = new Dataset();
ds = GetTablesFromDataBase("Select * from Order, Select * from OrderDetails, Select * from Product");

运行上面的代码后,我的数据集包含三个名为TableTable1Table2 Table 但我希望我的数据集表名称与数据库表名称相同,例如: OrderOrderDetailsProduct 有什么方法可以编写查询或代码,以便数据集表名称与数据库表名称相同?

请不要提出以下代码来更改数据集的表名:

Dataset.TableName = "RequiredTableName"; 

您可以使用类型化的数据集或表映射

像这样的东西

SqlDataAdapter da = new SqlDataAdapter(...);
DataSet ds = new DataSet();
DataTableMapping dtm1, dtm2, dtm3;
dtm1 = da.TableMappings.Add("Table", "Employees"); 
dtm2 = da.TableMappings.Add("Table1", "Products");
dtm3 = da.TableMappings.Add("Table2", "Orders");
da.Fill(ds);

您可能应该改用DataTable类。 这是相同的mSDN参考: http : //msdn.microsoft.com/zh-cn/library/system.data.datatable.aspx它使您可以定义所需的所有属性,并为您提供更多的功能与桌子。

并且由于您似乎希望将所有表都放在一个类中,因此建议您创建一个DTO,使其基本上类似于您想要使用的DataSet类的任何属性,然后将IList添加为该DTO的属性之一。

希望这对您有所帮助。

ds.Tables[0].TableName = "Required Table Name";
ds.Tables[1].TableName = "Required Table Name";
ds.Tables[2].TableName = "Required Table Name";

您可以使用此方法。

您可以使用单独的select返回表的名称。

SELECT 'Employees','Orders';
SELECT * FROM Employees;
SELECT * FROM Orders;

(您也可以从全局系统表中选择表名...)

然后,您可以在数据集中自动设置表名:

for (int cIdx = 0; cIdx < ds.Tables[0].Columns.Count; ++cIdx) {
    int tIdx = cIdx + 1;
    if (tIdx >= ds.Tables.Count) {
        break;
    }
    ds.Tables[tIdx].TableName = ds.Tables[0].Rows[0][cIdx].ToString().Trim();
}
ds.Tables.RemoveAt[0];

这也是一种解决方法,但是我不知道更好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM