Fill()的两个参数为dataset和string srcTable,如果是单一表源,就可以为adp.Fill(ds,"student");但是现在涉及到笛卡尔积,我就不知道怎么写了……
解答:adp.Fill(ds,"student");后面的"student"是SQL执行后形成虚拟表的名称.跟你的笛卡尔积没有关系.这个地方还是这么写就可以了.当然可以换个名字.
笛卡尔积是通过cross join查询出来的.虽然是2张表的查询.但是最后SQL返回的结果笛卡尔积是一张虚拟表.
比如table1和table2 进行了cross join查询.形成了笛卡尔积.这个笛卡尔积其实是table3了.是个虚拟表.adp.Fill的时候.其实是把table3放到了dataset中.后面你取名字也是取这个table3的名字.这个跟单表和多表没有关系的.还是这么写.
笛卡尔积应该是你SQL语句中进行处理的吧,然后得到一些数据;
这里的adp.Fill(ds, "你想给显示数据表取的名字");
然后你可以在GridView数据绑定的时候使用它来处理:
GridView1.DataSource = ds.Tables[0].defaultView;
//GridView1.DataSource = ds.Tables["你想给显示数据表取的名字"].defaultView;
GridView1.DataBind();
========================================================
说明:
adp.Fill(ds);这里可以添加第二个参数,也可以不添加;
不添加的话,就用数字索引;
如:
DataTable dt = ds.Tables[0];
如果添加第二个参数,就可以使用参数来索引,如下:
DataTable dt = ds.Tables["你添加的参数"];
可以对sql语句处理