无法正确显示datagridview中的ms sql表中的数据

时间:2019-02-26 21:28:36

标签: c# sql-server winforms

不知道该如何解决。 所以我有一个从MS SQL Server导入的表(屏幕快照)患者(#1)和 Diagnoz (诊断)(#2)。第一个表包含患者数据的完整列表和id_diagnoz的外键,其中指示了Stage和Name_diagnoz。 表(#3)是现成的选项,用于输出没有多余列的数据,但这不是问题。"select Pacient.id_patient, Pacient.Name, Pacient.Surname, Pacient.Middle_name, Pacient.Age, Pacient.Legal_address_Clinic, Diagnoz.Name_diagnoz, Diagnoz.Stage FROM Pacient JOIN Diagnoz ON Diagnoz.id_diagnoz = Pacient.id_diagnoz";很好。


问题是,当填充文本框和组合框的数据时,我需要首先从表中生成一个id_diagnoz(#2),并将其添加到病人表中(#1)。但是,我几个小时都无法做到这一点,因为即使该错误也没有导致。因此,我决定将id_diagnoz分别添加到空表(#4)中,以确保查询正常工作。 请帮我把这个id_diagnoz和其他数据放入病人表中。

  private void button5_Click(object sender, EventArgs e)
        {

            using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-R551818\\SQLEXPRESS;Initial Catalog=Fond;Integrated Security=True"))
            {



                SqlDataAdapter comm = new SqlDataAdapter("SELECT id_diagnoz FROM Diagnoz WHERE Name_diagnoz = '" + comboBox2.Text + "' and Stage = '" + comboBox3.Text + "'" +
                    "INSERT INTO Pacient (Name, Surname, Middle_name, Column__Passport, Legal_address_Clinic, Age)" +
                    " VALUES (@Name, @Surname, @Middle, @Passport, @AddresClinic, @Age) ", conn);

                comm.SelectCommand.Parameters.AddWithValue("@Name", textBox3.Text);
                comm.SelectCommand.Parameters.AddWithValue("@Surname", textBox4.Text);
                comm.SelectCommand.Parameters.AddWithValue("@Middle", textBox5.Text);
                comm.SelectCommand.Parameters.AddWithValue("@Passport", maskedTextBox1.Text);
                comm.SelectCommand.Parameters.AddWithValue("@AddresClinic", comboBox1.Text);
                comm.SelectCommand.Parameters.AddWithValue("@Age", textBox7.Text);
                DataSet ds = new DataSet();
                comm.Fill(ds);
                //da.Fill(ds, "Pacient");

                dataGridView2.DataSource = ds.Tables[0];
                conn.Close();

                conn.Open();

            }}

Screenshot for understanding

1 个答案:

答案 0 :(得分:0)

您不应该在插入查询中指定id_diagnoz并为该字段的值提供在那里的子查询吗? 像这样:

INSERT INTO Pacient (Name, id_diagnoz, Surname, Middle_name, Column__Passport, Legal_address_Clinic, Age)
VALUES (@Name, 
SELECT id_diagnoz FROM Diagnoz WHERE Name_diagnoz = '" + comboBox2.Text + "' and Stage = '" + comboBox3.Text + "'",
@Surname, @Middle, @Passport, @AddresClinic, @Age)