不知道该如何解决。
所以我有一个从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();
}}
答案 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)