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?