C# 如何将数据插入两个表中

C# 如何将数据插入两个表中,c#,mysql,asp.net,insert,foreign-keys,C#,Mysql,Asp.net,Insert,Foreign Keys,我想知道如何将数据插入两个不同的表中 我有 订单表,其中包含: 订单ID、信息、价格、增值税、客户ID 和客户表 CustomerID、名称、姓氏 现在我想输入新的订单,它的主键是1 我如何编写SQL来为特定的人输入此订单,…比如说在customer表中id为1的人 这就是我目前所拥有的,但我就是找不到解决办法 using (SqlCommand cmd = new SqlCommand("INSERT INTO [Orders] (info, Price, VAT, Customer_ID)

我想知道如何将数据插入两个不同的表中

我有

订单表,其中包含:

订单ID、信息、价格、增值税、客户ID

客户

CustomerID、名称、姓氏

现在我想输入新的订单,它的主键是1

我如何编写SQL来为特定的人输入此订单,…比如说在customer表中id为1的人

这就是我目前所拥有的,但我就是找不到解决办法

using (SqlCommand cmd = new SqlCommand("INSERT INTO [Orders] (info, Price, VAT, Customer_ID) VALUES (@info, @Price, @VAT, @Customer_ID)"))
                {
                    cmd.Connection = conn;
                    cmd.Parameters.AddWithValue("@info", input1.Text);
                    cmd.Parameters.AddWithValue("@Price", input2.Text);
                    cmd.Parameters.AddWithValue("@VAT", input3.Text);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
更新


我不想通过文本框输入外键(id),但要从当前登录的用户那里获取它…

除非我误解了您的问题,否则添加另一个参数应该很简单

using (SqlCommand cmd = new SqlCommand(
    "INSERT INTO [Orders] (info, Price, VAT, Customer_ID) VALUES (@info, @Price, @VAT, @Customer_ID)"))
{
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("@info", input1.Text);
    cmd.Parameters.AddWithValue("@Price", input2.Text);
    cmd.Parameters.AddWithValue("@VAT", input3.Text);
    cmd.Parameters.AddWithValue("@Customer_ID", input4.Text);
    conn.Open();
    cmd.ExecuteNonQuery();
}
如果您没有customer_ID作为输入字段,并且希望它始终为customer“1”创建订单,则执行以下操作

using (SqlCommand cmd = new SqlCommand(
    "INSERT INTO [Orders] (info, Price, VAT, Customer_ID) VALUES (@info, @Price, @VAT, 1)"))
{
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("@info", input1.Text);
    cmd.Parameters.AddWithValue("@Price", input2.Text);
    cmd.Parameters.AddWithValue("@VAT", input3.Text);
    conn.Open();
    cmd.ExecuteNonQuery();
}
相反,如果您想在查找订单所针对的客户时做一些更具动态性的事情,我们将首先需要有关您的数据输入的更多信息。您需要执行select查询来查找customer_ID,然后将其作为参数传入,或者在insert查询中进行子选择

编辑:

下面是使用注释中提到的动态查询的代码

 using (SqlCommand cmd = new SqlCommand(
        "INSERT INTO [Orders] (info, Price, VAT, Customer_ID) SELECT @info, @Price, @VAT, CustomerID FROM Customer WHERE Name = @Username)"))
    {
        cmd.Connection = conn;
        cmd.Parameters.AddWithValue("@info", input1.Text);
        cmd.Parameters.AddWithValue("@Price", input2.Text);
        cmd.Parameters.AddWithValue("@VAT", input3.Text);
        cmd.Parameters.AddWithValue("@Username", SomeVariableWithUsername);
        conn.Open();
        cmd.ExecuteNonQuery();
    }

是不是你的护理人员失踪了

  cmd.Parameters.AddWithValue("@Customer_ID", input4.Text);

我不想输入外键…我想从当前登录的用户中读取它OK,customer表中是否有与当前登录的用户匹配的字段?如果是这样,那么您可以使用customer表中的唯一标识信息进行子选择,以找到正确的customerid。在这种情况下,您的查询将类似于
插入[订单](信息、价格、增值税、客户ID)选择@info、@Price、@VAT,FROM Customer,其中Name=@UserName)
然后只需添加@UserName作为另一个参数,您就可以在我的问题中看到我的字段。客户ID应该是1号……基于此,客户可以获得他的订单信息。如果客户表中没有与用户名直接相关的内容,那么您必须让用户在输入订单之前选择客户。然后你只需像其他参数一样传入customerid。我想我只需在登录表单上获取我的用户id,通过会话进行传输,然后在查询中使用它。可能不是最好的架构,但至少可以工作我不想输入外键…我想从当前登录的用户那里读取它