[英]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");
运行上面的代码后,我的数据集包含三个名为Table
, Table1
, Table2
Table
。 但我希望我的数据集表名称与数据库表名称相同,例如: Order
, OrderDetails
, Product
。 有什么方法可以编写查询或代码,以便数据集表名称与数据库表名称相同?
请不要提出以下代码来更改数据集的表名:
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.