2016-11-30 141 views
1

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

订单表,其中有:

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

客户

客户ID,姓名,姓氏

现在我想输入新的订单,这将有主键为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(); 
       } 

UPDATE

我不想通过输入文本框外键(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); 
    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(); 
} 

反之,如果你想要做看看哪个客户订单是更加动态的,我们将首先需要关于您的数据输入的更多信息。您需要执行select查询来查找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(); 
    } 
+0

我不想输入外键...我想从目前的阅读登录的用户 – aiden87

+0

好吧,有没有在客户表与登录用户当前匹配的领域? 如果是这样,那么您可以使用客户表中的唯一标识信息来查找正确的客户。 在您查询将会像 'INSERT INTO [常规](信息,价格,增值税,CUSTOMER_ID)选择@info,@price,@VAT,从客户WHERE名称= @用户)' 然后,只需添加@UserName这种情况下,作为另一个参数 –

+0

不,你可以在我的问题中看到我的领域。 Customer_ID应该是数字1 ....基于此,客户可以得到他的订单信息 – aiden87

1

提到可能是您的parametry缺什么?

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

我不想输入外键...我想从当前登录的用户读取它 – aiden87

相关问题