在进行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不支持事务处理的更多相关文章

  1. Oracle 11g 的官方支持周期和时限

    Oracle公司对于自身产品的支持策略大多数人很难搞清楚,对于Oracle Database 11g的支持周期,有很多朋友产生了异议,参考下文提到的一些文件,希望可以帮助大家理解Oracle的产品支持 ...

  2. 【Spring】Spring系列5之Spring支持事务处理

    5.Spring支持事务处理 5.1.事务准备 以上代码结构与AOP的前置通知.返回通知.异常通知.后置通知一样. 5.2.声明式事务 5.2.1.基于注解 5.2.2.基于配置文件 5. 3.事务传 ...

  3. 【Oracle】ORACLE SQL Developer不支持JAVA版本

    ORACLE SQL Developer不支持JAVA版本 今天我打开 ORACLE SQL Developer准备开始练手.没有想到却给出了错误提示. 我 是安装了java JDK的而且是1.6版本 ...

  4. oracle in表达式参数支持最大上限1000个

    oracle in表达式参数支持最大上限1000个 方法是拆分为多个 col in ... or col in ... #region 解决大于1000的问题 private String getSu ...

  5. [转帖]Oracle 数据库官方不支持VMWare

    Oracle 数据库官方不支持VMWare [日期:2014-05-13] 来源:Linux社区  作者:myhuaer [字体:大 中 小]   https://www.linuxidc.com/L ...

  6. MySQL不支持事务处理的解决方法

    MySQL数据库默认的存储引擎类型是MyISAM,这种存储引擎类型不支持事务处理. 在MySQL中,只有InnoDB存储引擎类型的数据表才能支持事务处理. 因此,如果想让MySQL支持事务处理,只要将 ...

  7. oracle+ibatis 批量插入-支持序列自增

    首先请先看我前面一篇帖子了解oracle批量插入的sql:[oracle 批量插入-支持序列自增] 我用的ibatis2.0,sqlMap文件引入的标签如下: <!DOCTYPE sqlMap ...

  8. oracle开启numa的支持

    在11.2中,即使是系统支持numa架构,oracle默认也不再检测硬件是否支持numa,也不开启对numa的支持. 要想开启对numa的支持,必须设置隐含参数: _enable_NUMA_suppo ...

  9. Oracle存储过程中不支持DML语言的解决方法(针对遇见的DROP关键字)

    ---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TA ...

随机推荐

  1. uLua 学习笔记 之一 lua脚本 打包与读取

    最近要学习热更新,搜了下,选择了ulua这个插件,本人也是新人.对这个插件也是一知半解,不过幸好加了专门讨论这一块的群,这个群的技术氛围还是很浓重的,特别是已经形成了一套自己的lua学习框架.最近周末 ...

  2. Checkbox框全选操作,form表单提交与jquery ajax提交两种处理方式

    //1.jquery ajax<script type="text/javascript"> $(function(){ var basePath = $(" ...

  3. 配置sql server2012属性 ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_5techref/html/6df812ad-4d80-4503-8a23-47719ce85624.htm

    服务与服务器是两个不同的概念,服务器是提供服务的计算机,配置服务器主要是对内存.处理器.安全性等几个方面配置.由于SQL Server 2005服务器的设置参数比较多,这里选一些比较常用的介绍. 配置 ...

  4. POJ2104 K-th number 函数式线段树

    很久没打代码了,不知道为什么,昨天考岭南文化之前突然开始思考起这个问题来,这个问题据说有很多种方法,划分树什么的,不过对于我现在这种水平还是用熟悉的线段树做比较好.这到题今年8月份的时候曾经做过,那个 ...

  5. ElasticSearch小操之Marvel,Sense

    慢慢弄弄,说不好马上就要用呢,,, 嘿嘿 参考网址: http://es.xiaoleilu.com/ Elasticsearch 权威指南(中文版) 阅读地址:Elasticsearch权威指南(中 ...

  6. lintcode:Add Binary 二进制求和

    题目: 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 样例 a = 11 b = 1 返回 100 解题: 和求两个链表的和很类似 考虑进位,考虑最后一项的进位 0+0 = 0 不 ...

  7. application.xml定时

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. Java Project和Web Project 区别

    java project是java工程,不包括JSP等前台页面的代码 大部分是CS结构的工程和一些jar包 web project是web工程,是BS结构的系统 web project部署到服务器上 ...

  9. Android:设计之屏幕适配

    据统计目前市场Android手机的分辨率有是10余种,分辨率如此广泛使得我们在处理分辨率适应方便遇到不少难题,本文就此难点记录设计与实际布局中的解决技巧. 以320x480为蓝本设计布局 因为Andr ...

  10. java:I/O流

    I/O是input/output的缩写,即输入输出端口. 从 文件.键盘.网络 等输入到java程序,再从java程序输出到 文件.显示器.网络等 分类: 1.输入流 和 输出流2.字节流 和 字符流 ...