.net 调用Oracle.Data.Access 组件提供的用于批量操作的方法
1、添加引用
using Oracle.DataAccess.Client;
using System.Configuration;
2、代码 增加方法
//DestinationTableName 表名
//connectionString 连接
string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString;
config配置文件中
<add name="DefaultConnectionString" connectionString="Data Source=库名;User ID=用户名;Password=密码;" providerName="System.Data.OracleClient"/>
//dataTable 数据
public void Insert(string DestinationTableName, string connectionString, DataTable dataTable)
{
if (dataTable.Rows.Count == 0)
{
return;
}
//string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString;
string strMainTableName = "表名";
// 锁表防止并发产生重复数据 删除数据表已经存在的同一批数据
string sSQLLock = "lock table " + strMainTableName + " in share row exclusive mode";
string strDeleSqlTemp = string.Format("delete from " + strMainTableName + " where ny='{0}' and dz in ({1})", strDate, strAdd);
//连接
using (OracleConnection conn = new OracleConnection(connectionString))
{
int recordCount = dtTemp.Rows.Count;//数据条数
conn.Open();//打开连接
OracleTransaction trans = conn.BeginTransaction();//连接打开事务
try
{
//锁表
OracleCommand cmdLock = new OracleCommand(sSQLLock, conn);
cmdLock.ExecuteNonQuery();
//删除原有数据
OracleCommand cmdDele = new OracleCommand(strDeleSqlTemp, conn);
cmdDele.ExecuteNonQuery();
//获取目标表表结构
DataTable DestDataTable = GetOracleTableSchema(strMainTableName);
//获取insert 语句
string strSql = common.GenerateInserSql(strMainTableName, dtTemp, "");
OracleCommand cmd = new OracleCommand(strSql, conn);
//参数赋值
common.GenerateParameter(DestDataTable, dtTemp, cmd);
cmd.Transaction = trans;
cmd.ArrayBindCount = recordCount;
cmd.BindByName = true;
cmd.ExecuteNonQuery();
trans.Commit(); //执行
}
catch (Exception ex)
{
trans.Rollback();
strRetVal = common.CreateXml("0007", "错误信息:" + ex.Message);
}
finally
{
conn.Close();
}
}
}
获取表列的方法GetOracleTableSchema,参数赋值方法GenerateInserSql在博客中详细说明http://www.cnblogs.com/xuxin-1989/p/4157697.html
.net 调用Oracle.Data.Access 组件提供的用于批量操作的方法的更多相关文章
- .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法—获取数据库表结构方法和跟参数赋值方法
1./// <summary> /// 获取当前目标表结构 /// </summary> /// <param name="tableName"> ...
- Windows 的 Oracle Data Access Components (ODAC)
下载 x64bit https://www.oracle.com/technetwork/cn/database/windows/downloads/index.html 适用于 Windows 的 ...
- 使用 Oracle Data Access Components连接oracel
使用微软自带的oracle连接类,在framework4.0中被标识为弃用,强行用它开发了Winform程序,发布放到XP上提示: Error System.Data.OracleClient req ...
- Oracle数据访问组件ODAC的安装方法
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库 ...
- Oracle数据访问组件ODAC的安装方法:
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库 ...
- .NET安装和配置Oracle数据访问组件(ODAC)
Many ASP.NET applications access Oracle database for the data source. Oracle supports the .NET with ...
- WIN7系统 64位出现 Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC).
WIN7系统 64位出现 Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC).请安装 Microsoft Data Acces ...
- Spring Data Jpa Specification 调用Oracle 函数/方法
开发框架用的Jpa,数据库是 Oracle. 在开发中难免会遇到需要数据库字段是字符串格式,但是又需要对其进行范围查询(数据库设计问题,后续应避免).那么问题来了, Jpa Specification ...
- 转 使用隐含Trace参数诊断Oracle Data Pump故障
http://blog.itpub.net/17203031/viewspace-772718/ Data Pump数据泵是Oracle从10g开始推出的,用于取代传统exp/imp工具的数据备份还原 ...
随机推荐
- 1 Linux平台下快速搭建FTP服务器 win7下如何建立ftp服务器
百度经验连接(亲测可用) http://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html win7下如何建立ftp服务器 http://j ...
- 第1章 网络编程基础(4)——TCP/IP通信
TCP协议利用网络层IP协议提供不可靠的通信服务,解决分组的重传和排序问题,为应用程序提供可靠的.端到端的.面向连接的基于字节流的服务. 对等TCP传输实体间的通信具有如下特征: 全双工 只支持两个端 ...
- iOS开发之多媒体API(1)
iOS开发之多媒体API(1) 播放视频 视频文件介绍 视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类.尽管后者在播放的稳定性和播放画面质量上可能没 ...
- cf E. Neatness
http://codeforces.com/contest/359/problem/E 题意:要关掉所有房间的灯,一个步骤要么开灯,要么关灯,要么向有灯的方向前进一格.输出一种关掉所有灯的方案.不能关 ...
- XJOI网上同步训练DAY6 T2
思路:记得FJ省队集训好像有过这题,可是我太弱了,根本不懂T_T #include<cstdio> #include<iostream> #include<cmath&g ...
- Qt信号和槽的个人总结
1.connect connect(sender,SIGNAL(signal()),receiver,SLOT(slot())); 这里用到了两个宏:SIGNAL() 和SLOT():通过connec ...
- Cypress的开发板的UART接口打印调试信息
说实话,在官方论坛现在还没有找到相关有用的消息,因为我们这个开发板的UART没引出来. http://www.cypress.com/?app=forum&id=167&rID=527 ...
- amcharts报表制作
fusioncharts官网:http://www.fusioncharts.com/demos/gallery/#column-and-bar 最近使用amcharts fb4,flashBuild ...
- text-overflow简单使用
text-overflow属性配合overflow才有效果,还记得把文字强制一行显示,如下代码: <!DOCTYPE html> <html lang="zh-cn&quo ...
- Hibernate试题解析
1.在Hibernate中,以下关于主键生成器说法错误的是(AC). A.increment可以用于类型为long.short或byte的主键(byte类型不可以) B.identity用于如SQL ...