Oracle的OracleBulkCopy不支持事务处理

在进行OracleBulkCopy批量数据导入的过程中使用事务后抛出了异常,
没使用事务时可以正确批量导入,
ORA-12154:无法解析指定的连接字符串,
但是TNS配置肯定是没有错的,
难道是ConnectionString不是这样写了,执行事务时发生了变化,
还有:
//暂时发现oracle的bulkCopy不支持事务处理
using (OracleBulkCopy bulkCopy = new OracleBulkCopy(conn,OracleBulkCopyOptions.UseInternalTransaction))
如果不支持事务,这个OracleBulkCopyOptions.UseInternalTransaction怎么解释。
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog afd = new OpenFileDialog();
if (afd.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
return;
}
string fileName = afd.FileName;
if (Path.GetExtension(fileName) != ".csv")
{
MessageBox.Show("文件名后缀必须是.csv");
return;
}
DataTable table = new DataTable();
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
using (StreamReader sr = new StreamReader(stream, Encoding.Default))
{
string firstline = sr.ReadLine();
string line; #region 把创建的列加入表的列集合中
//Id
DataColumn column = new DataColumn();
column.ColumnName = "Id";
column.DataType = System.Type.GetType("System.Int32");
table.Columns.Add(column);
//MobileNumber
column = new DataColumn();
column.ColumnName = "MobileNumber";
column.DataType = System.Type.GetType("System.String");
column.MaxLength = ;
table.Columns.Add(column);
//MobileArea
column = new DataColumn();
column.ColumnName = "MobileArea";
column.DataType = System.Type.GetType("System.String");
column.MaxLength = ;
table.Columns.Add(column);
//MobileType
column = new DataColumn();
column.ColumnName = "MobileType";
column.DataType = System.Type.GetType("System.String");
column.MaxLength = ;
table.Columns.Add(column);
//AreaCode
column = new DataColumn();
column.ColumnName = "AreaCode";
column.DataType = System.Type.GetType("System.String");
column.MaxLength = ;
table.Columns.Add(column);
//PostCode
column = new DataColumn();
column.ColumnName = "PostCode";
column.DataType = System.Type.GetType("System.String");
column.MaxLength = ;
table.Columns.Add(column);
#endregion while ((line = sr.ReadLine()) != null)
{
string[] mobileMsg = line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
int Id = Convert.ToInt32(mobileMsg[]);
string MobileNumber = mobileMsg[].Trim('"');
string MobileArea = mobileMsg[].Trim('"');
string MobileType = mobileMsg[].Trim('"');
string AreaCode = mobileMsg[].Trim('"');
string PostCode = mobileMsg[].Trim('"');
//创建行,把行加入表的行集合中
DataRow row = table.NewRow();
row["Id"] = Id;
row["MobileNumber"] = MobileNumber;
row["MobileArea"] = MobileArea;
row["MobileType"] = MobileType;
row["AreaCode"] = AreaCode;
row["PostCode"] = PostCode;
table.Rows.Add(row);
}
} int i = table.Rows.Count;
Stopwatch sw = new Stopwatch();
sw.Start();
using (OracleConnection conn = new OracleConnection())//连接
{
conn.ConnectionString = @"Data Source=(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.117)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.192.168.1.117)
))
);User Id=scott;Password=abcd5226584;";
conn.Open();
using (OracleTransaction tx = conn.BeginTransaction())//启动事务
using (OracleBulkCopy bulkCopy = new OracleBulkCopy(conn,OracleBulkCopyOptions.UseInternalTransaction))
{
bulkCopy.DestinationTableName = "T_MOBILE";
foreach (DataColumn column in table.Columns)
{
bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName);//源列名->目标列名
}
try //如果发生异常就回滚
{
bulkCopy.WriteToServer(table);//把table表写入数据库表中
tx.Commit();
}
catch (Exception ex)
{
tx.Rollback();
throw new Exception(ex.Message);
}
}
sw.Stop();
MessageBox.Show("耗时:" + sw.ElapsedMilliseconds + "秒");
}
}
}
错误代码:OracleBulkCopy进行事务处理的
Oracle的OracleBulkCopy不支持事务处理的更多相关文章
- Oracle 11g 的官方支持周期和时限
Oracle公司对于自身产品的支持策略大多数人很难搞清楚,对于Oracle Database 11g的支持周期,有很多朋友产生了异议,参考下文提到的一些文件,希望可以帮助大家理解Oracle的产品支持 ...
- 【Spring】Spring系列5之Spring支持事务处理
5.Spring支持事务处理 5.1.事务准备 以上代码结构与AOP的前置通知.返回通知.异常通知.后置通知一样. 5.2.声明式事务 5.2.1.基于注解 5.2.2.基于配置文件 5. 3.事务传 ...
- 【Oracle】ORACLE SQL Developer不支持JAVA版本
ORACLE SQL Developer不支持JAVA版本 今天我打开 ORACLE SQL Developer准备开始练手.没有想到却给出了错误提示. 我 是安装了java JDK的而且是1.6版本 ...
- oracle in表达式参数支持最大上限1000个
oracle in表达式参数支持最大上限1000个 方法是拆分为多个 col in ... or col in ... #region 解决大于1000的问题 private String getSu ...
- [转帖]Oracle 数据库官方不支持VMWare
Oracle 数据库官方不支持VMWare [日期:2014-05-13] 来源:Linux社区 作者:myhuaer [字体:大 中 小] https://www.linuxidc.com/L ...
- MySQL不支持事务处理的解决方法
MySQL数据库默认的存储引擎类型是MyISAM,这种存储引擎类型不支持事务处理. 在MySQL中,只有InnoDB存储引擎类型的数据表才能支持事务处理. 因此,如果想让MySQL支持事务处理,只要将 ...
- oracle+ibatis 批量插入-支持序列自增
首先请先看我前面一篇帖子了解oracle批量插入的sql:[oracle 批量插入-支持序列自增] 我用的ibatis2.0,sqlMap文件引入的标签如下: <!DOCTYPE sqlMap ...
- oracle开启numa的支持
在11.2中,即使是系统支持numa架构,oracle默认也不再检测硬件是否支持numa,也不开启对numa的支持. 要想开启对numa的支持,必须设置隐含参数: _enable_NUMA_suppo ...
- Oracle存储过程中不支持DML语言的解决方法(针对遇见的DROP关键字)
---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TA ...
随机推荐
- ZOJ 2724 Windows Message Queue (优先级队列,水题,自己动手写了个最小堆)
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...
- NSString+URLEncoding.h --使用Obj-C对数据等进行URLEncoding编码
在Objective-c进行网络编程时,经常需要把数据转换成URLEncoding编码,如对+号编码后,变成%2b.这里我们给出一种实现. //NSString+URLEncoding.h #impo ...
- TortoiseSVN文件夹及文件图标不显示解决方法(转发)
地址:http://blog.csdn.net/lishehe/article/details/8257545 由于自己的电脑是win7(64位)的,系统安装TortoiseSVN之后,其他的功能都能 ...
- lintcode:Binary Tree Postorder Traversal 二叉树的后序遍历
题目: 二叉树的后序遍历 给出一棵二叉树,返回其节点值的后序遍历. 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 挑战 你能使用非递归实现么? 解题: 递归程序 ...
- *[hackerrank]Girlfriend & Necklace
https://www.hackerrank.com/contests/w8/challenges/gneck 有点意思.是DP,最优解包含最优子问题.F(X)=F(X-1)+F(X-3).因为F(X ...
- POJ1248 Safecracker
第一次写DFS的程序,虽然是个水题.1. 学了memset2. 可以存下来A-Z的各个次方的结果3. 可以排序优化4. 我用了t[0]==0来判断是否有解,也可设个flag5. 用了递归,也可用五层循 ...
- windows下顽固软件卸载不了的解决方法
下面以autocad2012举例: cad2012卸载显示 “无法获得同类产品” 而且也安装不上. 解决方法:1,开始>运行>输入"regedit",找到下面的注册表路 ...
- Shell脚本的编写
筛选后统计总数 cat logs | grep IconsendRedirect | wc -l >> bb.log 筛选后分类统计并且排序 cat logs | grep Iconsen ...
- iOS Objective-C对象模型及应用
前言 原创文章,转载请注明出自唐巧的技术博客. 本文主要介绍Objective-C对象模型的实现细节,以及Objective-C语言对象模型中对isa swizzling和method swizzli ...
- PHP比你想象的好得多
有很多对于PHP的抱怨,甚至这些抱怨也出自很多聪明的人.当Jeff Atwood写下对于PHP的另一篇抱怨文章之后,我思考了下PHP的好的方面. 这些抱怨最大的问题是他们出自很多仍在使用旧版本PHP的 ...