返回首页

gbase数据、南大通用产品文档:GBase8a在GBase ADONET中使用事务

更新日期:2024年09月11日

在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 -


显示帮助信息
gs_upgradectl -? | --help

显示版本号信息
gs_upgradectl -V | --version

选择升级策略
gs_upgradectl -t chose-strategy [-l LOGFILE]

自动升级GBase 8c
gs_upgradectl -t auto-upgrade -X XMLFILE
[-l LOGFILE] [--grey]

自动回滚升级

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
246
gs_upgradectl -t auto-rollback -X XMLFILE [-l LOGFILE] [--force]

升级提交
gs_upgradectl -t commit-upgrade -X XMLFILE [-l LOGFILE]

一旦提交操作完成,则不能再执行回滚操作。



sword GCITransRollback(
GCISvcCtx *svchp,
GCIError *errhp,
ub4 flags
);

回滚SQL的执行动作。

参数
输入
/输出


svchp
输入
要回滚的上下文句柄
errhp
输入
错误信息句柄,该接口调用失败时将错误码与错误信息写入
该句柄,可设置为空
flags
输入
保留参数, 目前不使用(仅用于和Oracle保持兼容)

如果执行成功, 则返回GCI_SUCCESS,否则返回GCI_ERROR