C#中如何用datagridview实现多表联查?

在一个datagridview里实现现实两张表的记录。... 在一个datagridview里实现现实两张表的记录。 展开
 我来答
cnmahj
推荐于2016-11-18 · TA获得超过954个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:1068万
展开全部
如果要显示两张数据库表的记录,最简单的方法是检索时将两张表中你要的数据一次检索出来,放入同一个DataTable来显示。

如果要显示两个以上DataTable中的数据,则需要将DataTable放入DataSet并建立relation就可以显示了。

下面是刚做的一个例子。另外,父表一定要有主键。建立关联时要用主键。

private void button1_Click(object sender, System.EventArgs e)
{
DataTable dtName = new DataTable("NameDt");
dtName.Columns.Add("ID", typeof(string));
dtName.Columns.Add("Name", typeof(string));
dtName.PrimaryKey = new DataColumn[] {dtName.Columns["ID"] };
dtName.Rows.Add("1", "Name1");

DataTable dtAddress = new DataTable("AddressDt");
dtAddress.Columns.Add("ID", typeof(string));
dtAddress.Columns.Add("Address", typeof(string));
dtAddress.Rows.Add("1", "Address1");
dtAddress.Rows.Add("1", "Address2");

DataSet ds = new DataSet();
ds.Tables.Add(dtName);
ds.Tables.Add(dtAddress);

// 关键!建立表之间的关联
ds.Relations.Add("ForName", dtName.Columns["ID"], dtAddress.Columns["ID"]);
// 在子表中添加计算列,引用父表的数据。
dtAddress.Columns.Add("Name", typeof(string), "Parent(ForName).Name");

dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "AddressDt";
}
tanzongyao233
2010-06-30 · TA获得超过288个赞
知道小有建树答主
回答量:595
采纳率:100%
帮助的人:211万
展开全部
打开数据库·视图··右键新建视图··
然后拖出你要查询的表··
只需你点击要查询的字段··把sql语句复制过去执行就好了·!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自石拱桥纯洁的太平花
2010-06-29 · TA获得超过161个赞
知道答主
回答量:134
采纳率:0%
帮助的人:0
展开全部
create table ClassInfo
(
cId int identity primary key,
cName varchar(50) not null
)
go
create table StuInfo
(
sId int identity primary key,
sName varchar(50) not null,
sCId int references ClassInfo(cId)
)
把sql语句告诉你。
string sql ="select sId,sName,(select cName from ClassInfo where cId=sCId) as cName from StuInfo";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高山之澍93
2010-06-30 · TA获得超过237个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:103万
展开全部
引用一楼数据结构:
*****************************************
create table ClassInfo
(
cId int identity primary key,
cName varchar(50) not null
)
go
create table StuInfo
(
sId int identity primary key,
sName varchar(50) not null,
sCId int references ClassInfo(cId)
)
把sql语句告诉你。
string sql ="select sId,sName,(select cName from ClassInfo where cId=sCId) as cName from StuInfo";
*****************************************

select A.sId,A.sName,B.cName from StuInfo AS A(nolock)
inner join ClassInfo AS B(nolock)
on A.sCID=B.cID

直接通过类似这条语句的SQL脚本将需要的多张表数据联合查询后作为一张表返回到前台,然后通过datagridview显示出来就OK了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式