日期:2014-05-18  浏览次数:20912 次

关于TableName 的问题
问个问题 "select * from aa as kkk ;select * from bbb as kkk1“ 执行完整个sql 返回多个DataTable ,但是为什么DataSet.Tables[0].TableName 属性 不是 kkk 和 kkk1 ,而是 Table、 Table1 呢, 有社呢么办法让TableName 直接变成 kkk1 呢, 因为我的sql 语句可能是未知的!

------解决方案--------------------
必须自己修改,请参考下面的例子

private void btnDataTable_Click(object sender, System.EventArgs e)
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=;database=northwind");
SqlDataAdapter da = new SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories;SELECT EmployeeID, LastName FROM Employees",cn);

DataSet ds = new DataSet();

//将Categories1 的源表映射到 DataSet 表 Employees
da.TableMappings.Add("Categories1","Employees");
da.Fill(ds,"Categories");
for(int i = 0 ; i < ds.Tables.Count ; i ++ )
Response.Write(ds.Tables[i].TableName + "<br />");
}
------解决方案--------------------
如果你写的是
da.Fill(ds); 
那么这两张表的名字是
Table Table1

如果你写的是
da.Fill(ds,"Categories");
那么这两张表的名字是
Categories Categories1

所以我们必须在
da.Fill(ds,"Categories");
之前告诉DataSet,那个叫Categories1的我们希望是Employees
da.TableMappings.Add("Categories1","Employees"); 
da.Fill(ds,"Categories"); 

在这里,把Categories和Categories1换成楼主的变量即可