1.据我所知,好象一次只能填一个表到DATASET中。
2.返回的只是一个表,这个表拥有几个表中所有的字段.
2.返回的只是一个表,这个表拥有几个表中所有的字段.
解决方案 »
- 关于radiobutton的使用
- 关于xml文件存储方法名的问题
- office引用问题
- 有关在DataGrid中使用DropDownlist的问题,各位高手帮帮忙--很急用的,多谢了
- 关于form上面的进度条
- 用API中的FloodFill的填充问题.高手请帮忙.
- g.DrawLines(redpen,90,30,110,40);//???????????????????????????????????????
- C#关于页面传值的问题
- 问大家一个常识性的问题,回复有分
- 启动visual studio2008打开的却是用户控件测试容器
- xml和sql server之间如何导入导出数据(在c#中的使用)
- 【Split问题】
2.如果SQL语句没问题的话,肯定是返回一个table。
INNER JOIN实际上是做卡迪尔积,然后再从中选择Header.ID = Wells.ID的记录。
Header INNER JOIN Wells ON Header.ID = Wells.ID相当于select * from Header,Wells where Header.ID = Wells.ID.
{ SqlConnection sqlConn = new SqlConnection(connString);
SqlDataAdapter adapter;
//创建空记录集
DataSet ds = new DataSet();
//级联数据表1
string strSql = "SELECT oId , oName FROM table1";
adapter = new SqlDataAdapter(strSql,sqlConn);
adapter.Fill(ds,"Table0");
//级联表子表2
string strSql2 = "SELECT oId , dd FROM table2";
adapter = new SqlDataAdapter(strSql2,sqlConn);
adapter.Fill(ds,"Table1");
//级联仪器类型表-子表
string strSql3 = "SELECT oId,cc FROM table3";
adapter = new SqlDataAdapter(strSql3,sqlConn);
adapter.Fill(ds,"Table2");
//创建级联关系
DataColumn dc1 = ds.Tables[0].Columns[0];
DataColumn dc2 = ds.Tables[1].Columns[1];
DataColumn dc3 = ds.Tables[0].Columns[0];
DataColumn dc4 = ds.Tables[2].Columns[1];
ds.Relations.Add("Def1",dc1,dc2);
ds.Relations.Add("Def2",dc3,dc4);
return ds;
}
我随手写的你参照一下!
http://www.dw-mx.com/tutorial/tutorial_text.asp?N_ID=117
参见:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdataconstraintcollectionclasstopic.htm
在建立关系时,外键约束自动已经建立。
还有,SQL语句里边最好使用参数,要不条件写多的时候你自己会乱的。
改为:
SELECT a.*, b.*, c.* FROM Header a INNER JOIN Wells b ON Header.ID = Wells.ID INNER JOIN Curve c ON Header.ID = Curve.I
这个语句返回三个表中的数据条件是 Header.ID ,Curve.I,Wells.ID 的数值必须同时存在相等,即它返回三个表中的所有列,但只返回在联接列中具有相等值的行。如果你建立了外键约束的话,它返回的就是三个表中所有的记录!
一下子能填充多个表吗?
可以的!
改为:SELECT a.*, b.*, c.* FROM Header a
INNER JOIN Wells b ON a.ID = b.ID
INNER JOIN Curve c ON a.ID = c.I
可以填充 DataSet中的多个表吗,
我只知道可以把数据库中的多表数据一次只能填充到DataSet的一个表中。
按照你说的,应该怎么添冲呢。
string strSql="select * from header select * from curve"SqlDataAdapter(strSql,sqlConn)这样就有两个表了,这样可以只有一次请求,速度快.