C# 如何显示具有外键c的表数据#
我有两个表,C# 如何显示具有外键c的表数据#,c#,sql-server,C#,Sql Server,我有两个表,tableA和tableB 在tableA中,我有一列id作为主键,而在tableB中,id是外键 现在,我想通过输入idno在gridview中显示这两个表的所有数据。正如我创建外键一样,它只在gridview中显示一个表数据 cmd = new SqlCommand("select * from [tableA]WHERE id=1", con); SqlDataAdapter sda = new SqlDataAdapter(cmd); dt = new DataTable(
tableA
和tableB
在tableA
中,我有一列id
作为主键,而在tableB
中,id
是外键
现在,我想通过输入id
no在gridview中显示这两个表的所有数据。正如我创建外键一样,它只在gridview中显示一个表数据
cmd = new SqlCommand("select * from [tableA]WHERE id=1", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
dt = new DataTable();
sda.Fill(dt);
dataGridView1.DataSource = dt;
表的创建和代码:
CREATE TABLE [dbo].[tableA]
(
[Id] INT NOT NULL,
[NAME] NCHAR(10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
表B:
CREATE TABLE [dbo].[tableB]
(
[Id] INT NOT NULL,
[fathername] NCHAR(10) NULL,
CONSTRAINT [FK_tableB_ToTable]
FOREIGN KEY([Id]) REFERENCES [dbo].[tableA]([Id])
);
请帮帮我,我试过了,但不行 您应该使用内部联接来显示两个表的结果。 像这样:
cmd = new SqlCommand("SELECT * FROM tableA INNER JOIN tableB ON tableA.id = tableB.id where tableA.id=1", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
dt = new DataTable();
sda.Fill(dt);
dataGridView1.DataSource = dt;
您可以像这样连接表
cmd = new SqlCommand("select A.ID, A.Name, B.Id, B.fathername from [tableA] as A join [tableB] as B on A.id = B.Id WHERE A.id=1", con);
为了节省一点空间,我为tableA(a)和tableB(B)使用了别名
您建立的这个关系有点毫无意义,因为您可以将父名称与name(tableA
)放在同一个表中。如果一个父亲有两个孩子,你会有太多的记录
要了解更多关于连接的信息,请使用谷歌。是一个简单的教程的内部联接是否需要外键table@princekhan您可以使用相同类型的列联接两个表,即使它们没有关系(FK)。内部联接只是联接的一种类型(以及左联接、右联接、外部联接和交叉联接),但例如,我有一个表1包含10行,表2包含5行,我想将这两个表数据一起显示。内部连接将满足它将满足的要求。顾名思义,internaljoin将向您显示两个表中连接在一起的具有关系的行。(我指的是FK)