请教OleDbDataAdapter.fill() 多个表的情况

qinhuaiuser 2009-07-22 04:33:11
我有两个表,一个是table1(t1_id,t1_name),另一个表是table2(t2_id,t2_name,t1_id);
这里table2表中的字段t1_id是与table1有关的外键,我要做的是输入t1_name找到t1_id,然后依据t1_id在table2中找到外键为t1_id的行,并且输出。


我这里有两个问题:1.OleDbDataAdapter.fill()参数有两个,一个是DataSet,一个是表名字符串,从这里感觉是这个函数只能对应一个表,我的问题是,能不能关联两个表?
2.下面是一部分代码,标记红色的部分是个疑问:可以用IN语句么?怎么做能够利用从table1中查的的结果?


我的做法是利用了DataSet,假设已经建立了数据库连接,
DataSet dsProvince = new DataSet();

string str1 = "Select t1_id from table1 where t1_name='" + textBox_country.Text + "'";
OleDbDataAdapter adapCountry = new OleDbDataAdapter(str1, thisCon);
OleDbCommandBuilder dsBuilder = new OleDbCommandBuilder(adapCountry);
adapCountry.Fill(dsProvince, "table1");

string str2 = "Select * from table2 where t1_id in XXXX ";
OleDbDataAdapter adapProvince = new OleDbDataAdapter(str2, thisCon);
OleDbCommandBuilder comBuilder = new OleDbCommandBuilder(adapProvince);
adapProvince.Fill(dsProvince, "table2");
...全文
262 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hecker728 2009-07-24
  • 打赏
  • 举报
回复
同上

表之间的逻辑通过sql语句来完成。来得到一张表。

OleDbDataAdapter.fill()只能关联一张表的
wuyq11 2009-07-22
  • 打赏
  • 举报
回复
Select * from table2 where t1_id in (Select t1_id from table1 where t1_name='" + textBox_country.Text + "')";
执行一次或通过DataRelation实现关联
using (OleDbConnection con = new OleDbConnection(cn))
{
DataSet ds = new DataSet();
OleDbDataAdapter dr1 = new OleDbDataAdapter("select * from A", con);
OleDbDataAdapter dr2 = new OleDbDataAdapter("select * from B", con);
dr1.Fill(ds, "tb1");
dr2.Fill(ds, "tb2");
ds.Relations.Add("", ds.Tables[0].Columns["id"], ds.Tables[1].Columns["ID2"]);


}

feifeiyiwen 2009-07-22
  • 打赏
  • 举报
回复
up
zgke 2009-07-22
  • 打赏
  • 举报
回复
使用

Select A.*,B.* from table1 A left join table2 B on B.t1_id=A.t1_id
where A.t1_id=???

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧