如何避免使用唯一存储过程进行多次插入时出现错误?

发布于 2024-10-16 04:32:37 字数 221 浏览 4 评论 0原文

我想知道如何在 C# 代码中管理事务。 我必须使用唯一的存储过程多次插入同一对象。 所以我必须多次启动具有相同参数的相同存储过程。

但是,如果过程中出现问题(丢失连接,...),我不希望只完成一部分插入而其余部分失败,我希望取消所有插入。 所以我想要一个 SQLtransaction,但在应用程序代码中,因为无法更改数据库。

我希望我足够清楚,并希望有人可以帮助我并推动我走上好的道路。 发射机

I wonder how is it possible to manage transaction in c# code..
I have to do multiple insertion of same object with unique storedprocedure.
So I have to launch the same stored procedure with same parameters multiple times.

But if a problem appear in the process (lost connection,...) I don't want just a part of insertions done and the rest failed, I want all the insertion cancelled.
So I would like a SQLtransaction but within the application code because a can't change database.

I hope i'm clear enough and hope somebody can help me and push me on the good way..
Tx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雨落□心尘 2024-10-23 04:32:37

您可以在开始工作之前调用 SqlConnection 上的 BeginTransaction,然后在结束时调用 CommitTransaction(或 RollbackTransaction)。

例如,请参阅此处的 MSDN 参考

You can call BeginTransaction on the SqlConnection before starting the work, and then CommitTransaction (or RollbackTransaction) at the end.

See MSDN reference here for example.

娇纵 2024-10-23 04:32:37

SqlConnection 类(IDbConnection 接口)有一个方法 BeginTrasaction 看看此处

The SqlConnection class (IDbConnection interface) has a method BeginTrasaction take a look here.

枯叶蝶 2024-10-23 04:32:37

您可以使用 BeginTransaction 方法(以及相关的后续方法)从代码执行事务。该链接有一个有关如何执行此操作的示例。

例子:

db.BeginTransaction("myTransaction");
try
{
    // all your code here.  If anything goes awry, throw an exception

    // all good, commit it.
    db.CommitTransaction();
}
catch(Exception e)
{
    // undo everything we just did
    db.RollbackTransaction();
}

You can use the BeginTransaction method (and the relevant subsequent methods) to perform transactions from code. That link has an example on how to do it.

Example:

db.BeginTransaction("myTransaction");
try
{
    // all your code here.  If anything goes awry, throw an exception

    // all good, commit it.
    db.CommitTransaction();
}
catch(Exception e)
{
    // undo everything we just did
    db.RollbackTransaction();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文