可以同时将数据插入两个表吗?在我当前的页面中,只有一个命令只在一个表CarTab中插入数据。
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
SqlCommand cmd = new SqlCommand("Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs)", conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@manufactures", Label1.Text);
cmd.Parameters.AddWithValue("@models", Label2.Text);
cmd.Parameters.AddWithValue("@plates", Label3.Text);
cmd.Parameters.AddWithValue("@colors", Label4.Text);
cmd.Parameters.AddWithValue("@years", Label5.Text);
cmd.Parameters.AddWithValue("@services", Label6.Text);
cmd.Parameters.AddWithValue("@roadtaxs", Label7.Text);
conn.Open();
cmd.ExecuteNonQuery();
如果我想放另一张表,TempTab是什么命令?感谢。
答案 0 :(得分:2)
您可以在传递给SQL命令的文本中编写2个插入查询,或者您可以编写存储过程并调用它。
答案 1 :(得分:0)
您重复与问题中显示的代码相同的代码,但修改第二个表的查询和参数。另外,我建议您在using
语句中包装IDisposable资源,例如数据库连接和命令。
答案 2 :(得分:0)
多表插入是INSERT..SELECT的扩展。语法具有以下形式:
INSERT ALL|FIRST
[WHEN condition THEN] INTO target [VALUES]
[WHEN condition THEN] INTO target [VALUES]
...
[ELSE] INTO target [VALUES]
SELECT ...
FROM source_query;
答案 3 :(得分:0)
您的答案有很多可能的解决方案。首先,我建议您在表TRIGGER
上的每个插页上创建CarTab
。
其次,为什么不更改命令对象的CommandText
并再次调用ExecuteNonQuery()
?
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
{
string QueryA = "Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs";
string QueryB = "Insert into TempTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs";
using (SqlCommand cmd = new SqlCommand("", conn))
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = QueryA;
cmd.Parameters.AddWithValue("@manufactures", Label1.Text);
cmd.Parameters.AddWithValue("@models", Label2.Text);
cmd.Parameters.AddWithValue("@plates", Label3.Text);
cmd.Parameters.AddWithValue("@colors", Label4.Text);
cmd.Parameters.AddWithValue("@years", Label5.Text);
cmd.Parameters.AddWithValue("@services", Label6.Text);
cmd.Parameters.AddWithValue("@roadtaxs", Label7.Text);
try
{
conn.Open()
cmd.ExecuteNonQuery();
cmd.CommandText = QueryB;
cmd.ExecuteNonQuery();
}
catch (SqlException e)
{
// put error here
}
finally
{
conn.Close();
}
}
}
并最后创建一个Stored Procedure
CREATE PROCEDURE InsertRecord
@manufactures varchar(50),
@models varchar(50),
@plates varchar(50),
@colors varchar(50),
@years varchar(50),
@services varchar(50),
@roadtaxs varchar(50)
AS
BEGIN
Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax)
Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs)
Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax)
Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs)
END
GO
并在您的C#代码中
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("InsertRecord", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = QueryA;
cmd.Parameters.AddWithValue("@manufactures", Label1.Text);
cmd.Parameters.AddWithValue("@models", Label2.Text);
cmd.Parameters.AddWithValue("@plates", Label3.Text);
cmd.Parameters.AddWithValue("@colors", Label4.Text);
cmd.Parameters.AddWithValue("@years", Label5.Text);
cmd.Parameters.AddWithValue("@services", Label6.Text);
cmd.Parameters.AddWithValue("@roadtaxs", Label7.Text);
try
{
conn.Open()
cmd.ExecuteNonQuery();
}
catch (SqlException e)
{
// put error here
}
finally
{
conn.Close();
}
}
}