事务(Transaction)

 <div>
    请输入转账金额:<asp:TextBox ID="TextBox1" runat="server">
    </asp:TextBox>
        <asp:Button ID="Button1"
        runat="server" Text="转账" οnclick="Button1_Click" />
    </div>

 

 

 protected void Page_Load(object sender, EventArgs e)
        {
            //Transfer();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Transfer();
        }
        protected void Transfer()
        {

           //创建数据库连接对象
            SqlConnection conn = new SqlConnection();

           //连接数据库
            conn.ConnectionString=@"Data Source=A102-34/SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True";
            conn.Open();

           // 利用当前建立的连接开始一个数据库事务
            SqlTransaction trans = conn.BeginTransaction();

           //创建命令
            SqlCommand comm = new SqlCommand();

            //命令连接到数据库对象
            comm.Connection = conn;

           //将命令添加到一个事务
            comm.Transaction = trans;
            try
            {

                string num = TextBox1.Text.Trim();
                comm.CommandText= "update T_Account set balance=balance-'"+num+"' where userAccount=2";
                comm.ExecuteNonQuery();
                comm.CommandText = "update T_Account set balance=balance+'" + num + "'where userAccount=3";
                comm.ExecuteNonQuery();

               //提交事务
                trans.Commit();
            }
            catch (SqlException ex)
            {

               //事务回滚
                trans.Rollback();
                Response.Write(ex.Message);
              
            }
            finally
            {
                conn.Close();
            }
        }

nestjs是一个基于Node.js的开发框架,而是nestjs中常用的一个数据库ORM工具。在nestjs中使用typeorm进行事务回滚可以通过以下步实现: 1. 首先,你需要在nestjs项目中安装typeorm和数据库驱动程序(如mysql、等)的相关依赖。 2. 在中,你可以使用装饰器`@()`来标记一个方法需要在事务中执行。这个装饰器可以应用在controller或service层方法上。 3. 在需要回滚事的方法中,你可以使用typeorm提供的`EntityManager`来管理事务。通过调用`entityManager.transaction()`方法,你可以创建一个新的事务。 4. 在事务中执行数据库操作时,如果发生错误或者需要回滚事务,你可以使用`entityManager.rollback()`方法来回滚事务。 5. 如果所有的数据库操作都成功完成,你可以使用`entityManager.commit()`方法来提交事务。 下面是一个nestjs中使用typeorm进行事务回滚的示例代码: ```typescript import { Injectable } from '@nestjs/common'; import { InjectEntityManager } from '@nestjs/typeorm'; import { EntityManager } from 'typeorm'; @Injectable() export class MyService { constructor( @InjectEntityManager() private readonly entityManager: EntityManager, ) {} @Transaction() async myMethod(): Promise<void> { try { await this.entityManager.transaction(async (entityManager) => { // 在事务中执行数据库操作 await entityManager.query('INSERT INTO table1 (column1) VALUES (value1)'); await entityManager.query('INSERT INTO table2 (column2) VALUES (value2)'); }); } catch (error) { // 发生错误时回滚事务 await this.entityManager.rollback(); throw error; } } } ``` 在上面的示例中,`myMethod()`方法被标记为`@Transaction()`,表示该方法需要在事务中执行。在事务中,我们使用`entityManager.query()`方法执行数据库操作。如果发生错误,我们会回滚事务并抛出错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值