.net下面Oracle和Sequence的问题
2004-03-31 20:17
435 查看
表的主键都是sequence, 用dataadpter的Update方法。不知道前人是怎么处理的,我偷懒如下:
public void Update(OracleDataAdapter adp, DataSet ds)
{//ds是ds.GetChanges()得到的
Debug.Assert(adp != null && adp.SelectCommand != null && ds != null);
foreach(DataTable tbl in ds.Tables)//自动找每个表
if (tbl.PrimaryKey.Length == 1 && tbl.PrimaryKey[0].DataType == typeof(Decimal))//有主键,并且是数值类型
foreach(DataRow row in tbl.Rows)//去找有变动的行
if (row.RowState == DataRowState.Added)//如果是新增行
row[tbl.PrimaryKey[0]] = SeqNext(); //取数据库数据库公用的sequence的下个值。
JoinTransaction(adp.InsertCommand);//加入当前事务
JoinTransaction(adp.UpdateCommand);//加入当前事务
JoinTransaction(adp.DeleteCommand);//加入当前事务
adp.Update(ds);
}
不知道别人怎么处理的,关键是更新以后还要能返回到DS主键。
public void Update(OracleDataAdapter adp, DataSet ds)
{//ds是ds.GetChanges()得到的
Debug.Assert(adp != null && adp.SelectCommand != null && ds != null);
foreach(DataTable tbl in ds.Tables)//自动找每个表
if (tbl.PrimaryKey.Length == 1 && tbl.PrimaryKey[0].DataType == typeof(Decimal))//有主键,并且是数值类型
foreach(DataRow row in tbl.Rows)//去找有变动的行
if (row.RowState == DataRowState.Added)//如果是新增行
row[tbl.PrimaryKey[0]] = SeqNext(); //取数据库数据库公用的sequence的下个值。
JoinTransaction(adp.InsertCommand);//加入当前事务
JoinTransaction(adp.UpdateCommand);//加入当前事务
JoinTransaction(adp.DeleteCommand);//加入当前事务
adp.Update(ds);
}
不知道别人怎么处理的,关键是更新以后还要能返回到DS主键。
相关文章推荐
- 用IE登录Linux服务器上的em出现的乱码的解决(Oracle 10g 系列)
- Oracle 10g for Windows 32bit安装图解
- 2Gb or Not 2Gb - File limits in Oracle (Part II)
- 2Gb or Not 2Gb - File limits in Oracle (Part I)
- 常用的ant的操作
- SqlCommand,OracleCommand,OleDbCommand 或 OdbcCommand
- ORACLE性能诊断―学习statspack笔记(二)[概述]
- 简介使用ASP.NET访问Oracle数据库的方法
- lei6.5学习心得
- Access ,Oracle , 動網論壇v7.0
- ORACLE用户自定义备份与恢复笔记
- 简介使用ASP.NET访问Oracle数据库的方法
- ORACLE性能诊断―学习statspack笔记(一) [安装与测试]
- 不用第归算法快速显示树,对于Oracle数据库(2)
- 不用第归算法快速显示树,对于Oracle数据库(1)
- 说一说如何配置Oracle的MTS Part1
- 说一说如何配置Oracle的MTS part2
- ORACLE获取DDL的几种常用的方法
- Oracle PL/SQL语言基础
- 用SQLPLUS调试返回游标集的Oracle存储过程