请给出本质解释!

解决方案 »

  1.   

    为后续操作搭建了一座桥梁,告诉数据库categorytable对应什么数据结构,将他的结构和数据传给调用它的组件,并取名为categorytable
      

  2.   

    da.tablemappings.add("table","categorytable")
    我也不明白"table" 是什么意思。
    最好能有个例子。
      

  3.   

    TableMappings并不能映射数据库表和DataSet中表的关系。
    它只是能映射DataSet中原有表名和别名的关系。
    比如
    da.TableMappings.Add("A","B");
    da.Fill(ds,"A");
    DataGrid.DataSource =ds;
    DataGrid.DataMember ="B" //如果不加TableMappings,应该是:DataGrid.DataMember ="A"
    这样的语句可以通过。
      

  4.   

    da.tablemappings.add("table","categorytable")在是在数据集多表的情况下使用达到表的映射。
    Sql server中的T-Sql支持同时返回多个记录集
    函数原形如下:
    public DataTableMapping DataTableMappingCollection.Add(
       string sourceTable,
       string dataSetTable
    );
    将如存储过程返回3个记录集,
    CREATE PROCEDURE GetCustomerOrdersInfo
    AS
    SELECT CustomerID,CompanyName,ContactName FROM Customers
    SELECT OrderID,OrderDate,CustomerID FROM Orders
    SELECT OrderID,ProductID,UnitPrice,Quantity,Discount FROM [Order Details]GO
    那在Ado.net这三个记录就会被默认为:
    table -〉Customers,
    table1->Orders,
    table2->Order Details,
    如果你的DataSet也包含了三个DataTable,那你就要在DataAdapter.Fill方法被调用之前指定好实际对应的表,如果由Ado.net自己指定多个表就变得不灵活了,而且有些时候会有表结构不符等问题,
    映射如下:
     dataAdapter.TableMappings.Add("Table","Customers");
     dataAdapter.TableMappings.Add("Table1","Orders");
     dataAdapter.TableMappings.Add("Table2","Order Details");
    //上面的Customers,Orders,Order Details参数是DataSEt中的DAtaTable表的名字,跟数据库无关,
    ==========================
    用看具体的实例,就直接看我的一片文章。
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx