如何将数据插入两个表

时间:2016-11-30 13:13:19

标签: c# mysql asp.net insert foreign-keys

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

我有

订单表,其中包含:

订单ID,信息,价格,增值税,Customer_ID

客户

CustomerID,Name,LastName

现在我想输入新订单,主键为1。

我如何编写将为特定人员输入此订单的SQL,...让我们说客户表中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),但是从当前登录的用户那里获取...

2 个答案:

答案 0 :(得分: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);
    cmd.Parameters.AddWithValue("@Customer_ID", input4.Text);
    conn.Open();
    cmd.ExecuteNonQuery();
}

如果您没有将customer_ID作为输入字段,并希望始终为客户创建订单" 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();
}

如果您希望通过查找订单所针对的客户来做一些更动态的事情,我们将首先需要有关您的数据输入的更多信息。您需要执行选择查询以查找customer_ID,然后将其作为参数传递或仅在插入查询中进行子选择。

修改

此处使用动态查询的代码,如您在评论中所述

 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();
    }

答案 1 :(得分:1)

可能是你的参数丢失了吗?

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