GBASE南大通用 ADO.NET 中的事务

2023-12-20 16:33:42

GBASE南大通用?ADO.NET 中支持事务,可以使用GBASE南大通用Connection 对象的BeginTransaction 函数开始一个事务,并默认使用 ReadCommitted 模式初始化。

事务中可以对单个表执行多个操作,或者对多个表执行多个操作,在事务未提交前,事务中的这些命令执行后并不是真正的影响数据库记录。当调用BeginTransaction 返回对象的 commit 方法时,才会真正的影响记录。

在GBASE南大通用?ADO.NET 中使用事务

在GBASE南大通用ADO.NET 使用事务时需下列步骤:

1) 使用 GBaseConnection 创建数据库连接对象

2) 使用 GBaseCommand 创建命令对象

3) 使用连接对象打开连接

4) 使用连接对象的 BeginTransaction 开启事务,返回事务对象

5) 将命令对象与连接对象及事务对象关联

6) 命令对象对表进行一些操作

7) 执行事务对象的提交方法

8) 命令对象执行失败后,执行事务对象的回滚方法

下面的例子展示在 GBase ADO.NET 中如何使用事务。

[ C# ]

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using GBase.Data;

using GBase.Data.GBaseClient;

using System.Diagnostics;

namespace UsingStoredRoutines

{

class Program

{

static void Main(string[] args)

{

GBaseConnection _Conn = new GBaseConnection();

_Conn.ConnectionString =

"server=192.168.5.41;user=root;database=test;password=1;pooling=fals

e";

GBaseCommand _Cmd = new GBaseCommand();

GBaseTransaction _Trans = null;

try

{

Console.WriteLine("Connecting to GBase...");

_Conn.Open();

_Trans = _Conn.BeginTransaction();

_Cmd.Connection = _Conn;

_Cmd.Transaction = _Trans;

// 在 GBase 8a 集群下需显示关闭自动提交模式

// _Cmd.CommandText = "set autocommit = false";

/ _Cmd.ExecuteNonQuery();

_Cmd.CommandText = "insert into `test`(`f_varchar`)

values('111')";

_Cmd.ExecuteNonQuery();

_Cmd.CommandText = "insert into `test`(`f_varchar`)

values('222')";

_Cmd.ExecuteNonQuery();

_Trans.Commit();

Console.WriteLine("Transaction has committed.");

}

catch (GBaseException ex)

{

_Trans.Rollback();

Console.WriteLine("Error " + ex.Number + " has

occurred: " + ex.Message);

}

finally

{

if (_Conn != null)

_Conn.Close();

Console.WriteLine("None.");

}

}

}

}

文章来源:https://blog.csdn.net/weixin_47390342/article/details/135088665
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。