Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何显示具有外键c的表数据#_C#_Sql Server - Fatal编程技术网

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)