我想知道如何将数据插入两个不同的表中。
我有
订单表,其中包含:
订单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),但是从当前登录的用户那里获取...
答案 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);