C# 当信息要保存在不同的表中时,如何将信息保存到数据库中?

C# 当信息要保存在不同的表中时,如何将信息保存到数据库中?,c#,sql,database,transactions,C#,Sql,Database,Transactions,我必须将以下变量保存到数据库中: string PoliciaID = Session["username"]; string PlacaAuto = Page.Request.QueryString["placaauto"]; string Carnet = Page.Request.QueryString["carnet"]; string Fecha = DateTime.Now; string TipoInf

我必须将以下变量保存到数据库中:

        string PoliciaID = Session["username"];
        string PlacaAuto = Page.Request.QueryString["placaauto"];
        string Carnet = Page.Request.QueryString["carnet"];
        string Fecha = DateTime.Now;
        string TipoInfraccion = Page.Request.QueryString["tipo"];
PoliciaID是另一个名为Policia的表的主键,Carnet是名为Persona的表的主键

在这种情况下,如何使用C#保存信息


谢谢你抽出时间

两个INSERT或UPDATE命令,每个表一个,在事务上下文中作为单个工作单元执行。要么两者都应该成功,要么两者都应该失败并回滚


可能有助于您了解事务。

两个INSERT或UPDATE命令,每个表一个,在事务上下文中作为单个工作单元执行。要么两者都应该成功,要么两者都应该失败并回滚

可能会帮助您了解交易。

正如@duffymo所说的那样

DECLARE @FirstTab TABLE (Col1 INT, Col2 INT)
DECLARE @SecondTab TABLE (Col3 INT, Col4 INT)

BEGIN TRANSACTION
BEGIN TRY
    INSERT INTO @FirstTab ( Col1, Col2 ) VALUES ( 1,2 )
    INSERT INTO @SecondTab ( Col3, Col4 ) VALUES ( 3,4 )
    COMMIT TRANSACTION 
END TRY 
BEGIN CATCH 
    ROLLBACK TRANSACTION
END CATCH 
(您可能还希望添加一些机制,以便与调用者进行通信,无论调用者成功(并提交了更改)还是失败(回滚))

所以这里的想法是这两个插入都会发生,或者两者都不会发生。如果在此过程中抛出异常,它将跳入
catch
块以回滚已完成的任何操作。但通常情况下,它只会做两次插入,提交工作,然后继续前进。

正如@duffymo所说的那样

DECLARE @FirstTab TABLE (Col1 INT, Col2 INT)
DECLARE @SecondTab TABLE (Col3 INT, Col4 INT)

BEGIN TRANSACTION
BEGIN TRY
    INSERT INTO @FirstTab ( Col1, Col2 ) VALUES ( 1,2 )
    INSERT INTO @SecondTab ( Col3, Col4 ) VALUES ( 3,4 )
    COMMIT TRANSACTION 
END TRY 
BEGIN CATCH 
    ROLLBACK TRANSACTION
END CATCH 
(您可能还希望添加一些机制,以便与调用者进行通信,无论调用者成功(并提交了更改)还是失败(回滚))


所以这里的想法是这两个插入都会发生,或者两者都不会发生。如果在此过程中抛出异常,它将跳入
catch
块以回滚已完成的任何操作。但通常情况下,它只需执行两次插入,提交工作,然后继续工作。

您能给我一个关于事务上下文的清晰示例吗?我对它进行了大量的研究,发现了它在理论上是什么——但我不知道如何在代码中应用它。再次感谢你的帮助,兄弟!:D@Sergio-见下面我的评论。(我想保留格式,所以不只是在这里添加注释)你能给我一个清楚的例子说明什么是事务上下文吗?我对它进行了大量的研究,发现了它在理论上是什么——但我不知道如何在代码中应用它。再次感谢你的帮助,兄弟!:D@Sergio-见下面我的评论。(我想保留格式,所以不只是在这里添加注释)您使用的是什么数据库?SQL Server?您使用的是什么数据库?SQL Server?