C# 在SQL中将数据插入到两个表中

C# 在SQL中将数据插入到两个表中,c#,asp.net,sql,C#,Asp.net,Sql,可以同时将数据插入两个表中吗?在我的当前页面中,只有一个命令只在一个表CarTab中插入数据 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); SqlCommand cmd = new SqlCommand("Insert into CarTab(Manufacture,Model,Plate,Color,Year,

可以同时将数据插入两个表中吗?在我的当前页面中,只有一个命令只在一个表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();

如果我想放另一张桌子,命令是什么?谢谢。

您可以在传递给SQL命令的文本中编写两个insert查询,也可以编写存储过程并调用它。

您可以重复问题中显示的代码,但修改第二个表的查询和参数。另外,我建议您使用语句将IDisposable资源(如数据库连接和命令)包装在
中。

多表插入是插入的扩展。.选择。语法的形式如下:

INSERT ALL|FIRST
[WHEN condition THEN] INTO target [VALUES]
[WHEN condition THEN] INTO target [VALUES]
...
[ELSE] INTO target [VALUES]
SELECT ...
FROM   source_query;

来源:

你的答案有很多可能的解决方案。首先,我建议您在表
CarTab
上的每个insert上创建一个
触发器

其次,为什么不更改命令对象的
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();
        }
    }
}
最后创建一个
存储过程

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代码中


吴宇森,Thnks。。请看我的问题,我需要帮助。也许你能给我一些想法。谢谢。您不需要使用()来连接Close()
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();
        }
    }
}