C# 插入到两个表中

C# 插入到两个表中,c#,sql,sql-server,C#,Sql,Sql Server,我有两张桌子: 保留地 ID,日期,时间,表格 客户 ID\u客户端,FNAME,LNAME,电子邮件,电话,FK\u预约 我有预订表的工作INSERT语句- string insertSql = "INSERT INTO Rezervacija (date,time,table) VALUES (@date,@time,@table); SqlCommand cmd = new SqlCommand(insertSql, con); cmd.Parameters.AddW

我有两张桌子:

  • 保留地

    ID
    日期
    时间
    表格

  • 客户

    ID\u客户端
    FNAME
    LNAME
    电子邮件
    电话
    FK\u预约

  • 我有预订表的工作
    INSERT
    语句-

     string insertSql = "INSERT INTO Rezervacija (date,time,table) VALUES (@date,@time,@table);
     SqlCommand cmd = new SqlCommand(insertSql, con);
    
     cmd.Parameters.AddWithValue("@date", txtDate.Text);
     cmd.Parameters.AddWithValue("@time", ddlTime.SelectedItem.Text);
     cmd.Parameters.AddWithValue("@table", ddlTable.SelectedItem.Text);
    
    但问题在于
    插入到客户机表外键中


    谁能帮助我如何将数据插入到两个相关的表中。

    您需要修改查询以获取刚才插入的行的ID

    string insertSql = "INSERT INTO Rezervacija (date,time,table) OUTPUT INSERTED.Id VALUES (@date,@time,@table);"
     SqlCommand cmd = new SqlCommand(insertSql, con);
    
     cmd.Parameters.AddWithValue("@date", txtDate.Text);
     cmd.Parameters.AddWithValue("@time", ddlTime.SelectedItem.Text);
     cmd.Parameters.AddWithValue("@table", ddlTable.SelectedItem.Text);
    
    var **reservationId** = (int)cmd.ExecuteScalar()
    
    string insertSql2 = "INSERT INTO CLIENT (ID_CLIENT,FNAME,LNAME,EMAIL,PHONE,FK_RESERVATION) VALUES (@clientId, @fname, @lname, @email, @phone, @reservation"
    
    SqlCommand cmd2 = new SqlCommand(insertSql2, con);
    cmd.Parameters.AddWithValue("@clientId", clientId);
    cmd.Parameters.AddWithValue("@fname", fname);
    cmd.Parameters.AddWithValue("@lname", lname);
    cmd.Parameters.AddWithValue("@email", email);
    cmd.Parameters.AddWithValue("@phone", phone);
    cmd.Parameters.AddWithValue("@reservation", **reservationId**);
    

    这将允许您在将输出返回到变量时在第二个查询中使用Inserted.Id。

    您使用的是哪个数据库系统?Oracle?我猜您的问题可能与从
    客户端
    保留
    的外键约束有关。你知道外键是什么以及它们是如何工作的吗?我使用的是SQL Server我忘了添加,TABLE是SQL中的一个关键字,所以你必须将它改为[TABLE]。