我使用数据集来存储加载时需要的15个表。当我使用存储过程填充所有表时,它返回所有表,但表的名称不是数据库中实际表名的名称。
它将所有带表名的表作为Table1,Table2,Table3 ......
我希望他们与名字一致,因为他们实际上在桌子上。
SELECT PK_GUEST_TYPE, [DESCRIPTION] FROM L_GUEST_TYPE
SELECT PK_AGE_GROUP_ID, AGE_GROUP FROM L_AGE_GROUP
SELECT PK_COMPANY_ID, COMPANY_NAME FROM M_COMPANY
SELECT PK_COUNTRY_ID, COUNTRY FROM L_COUNTRY
SELECT PK_EYE_COLOR_ID, [DESCRIPTION] FROM L_EYE_COLOR
SELECT PK_GENDER_ID, [DESCRIPTION] FROM L_GENDER
SELECT PK_HAIR_COLOR_ID, [DESCRIPTION] FROM L_HAIR_COLOR
SELECT PK_STATE_PROVONCE_ID, [DESCRIPTION] FROM L_STATE_PROVINCE
SELECT PK_STATUS_ID, [DESCRIPTION] FROM L_STATUS
SELECT PK_TITLE_ID, [DESCRIPTION] FROM L_TITLE
SELECT PK_TOWER_ID, [DESCRIPTION] FROM M_TOWER
SELECT PK_CITY_ID, [DESCRIPTION] FROM L_CITY
SELECT PK_REGISTER_TYPE_ID, [DESCRIPTION] FROM L_REGISTER_TYPE
这是我的前端编码来填充数据集。
OpenConnection();
adp.Fill(ds);
CloseConnection(true);
答案 0 :(得分:2)
答案 1 :(得分:2)
可能是通过在返回表格中添加额外的列来解决这个问题
Create procedure psfoo ()
AS
select * ,'tbA' as TableName from tbA
select * ,'tbB' as TableName from tbB
然后在C#代码中
foreach (DataTable dt in ds.Tables)
{
if (dt.Rows[0]["TableName"].ToString().Contains("tbA"))
{
}
else if (dt.Rows[0]["TableName"].ToString().Contains("tbB"))
{
}
}
答案 2 :(得分:1)
我会投入时间来使用typed dataset,让很多事情变得更容易。 请记住,您可能会在一到三个月内回到此代码。 :)
答案 3 :(得分:0)
让第一个(或最后一个)表成为meta
表名的表,其顺序与下面(或前面)表的顺序相同。
答案 4 :(得分:0)
MS表映射是一个完全的笑话。 有什么区别
ds.Table(0)
ds.Table("Table")
ds.Table("Customer")
当我们无法保证在我们的应用程序中返回的表的顺序时。 需要是STRONG-NAME匹配...... See my solution