C#中关于dataset用法的问题

DataSetds;ds=newDataSet();sqlConnection1.Open();stringsql=(省略了……);SqlDataAdapteradp=n... DataSet ds;
ds = new DataSet();
sqlConnection1.Open();
string sql=(省略了……);
SqlDataAdapter adp = new SqlDataAdapter(sql, sqlConnection1);
ds.Clear();
adp.Fill(...);!!!!!!!!!!!!!!(问题所在,详情见下)

想实现的功能:sql语句查询数据库,两张表做笛卡尔积,选定一些列在datagridview中显示出来。
目前的问题:Fill()的两个参数为dataset和string srcTable,如果是单一表源,就可以为adp.Fill(ds,"student");但是现在涉及到笛卡尔积,我就不知道怎么写了……
有人说可以写一个函数,返回一个dataTable对象,作为Fill()的参数,但是我不知道怎么写,还请给位达人们知道,不胜感激!
展开
 我来答
lcg1986
2008-12-08 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1618万
展开全部
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的名字.这个跟单表和多表没有关系的.还是这么写.
88421220
2008-12-08 · TA获得超过125个赞
知道答主
回答量:150
采纳率:0%
帮助的人:0
展开全部
笛卡尔积应该是你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["你添加的参数"];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1024未解之迷
2008-12-08 · 找到程序中问题的解决方法
1024未解之迷
采纳数:48 获赞数:218

向TA提问 私信TA
展开全部
可以对sql语句处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式