在GBase ADO.NET 使用事务时需下列步骤:
1) 使用GBaseConnection 创建数据库连接对象
GBase 8a 程序员手册ADO.NET 篇
南大通用数据技术股份有限公司
- 27 -
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;
GBase 8a 程序员手册ADO.NET 篇
- 28 -
南大通用数据技术股份有限公司
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.");
}
}
}
}
GBase 8a 程序员手册ADO.NET 篇
南大通用数据技术股份有限公司
- 29 -