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.");
}
}
}
}