Oracle的OracleBulkCopy不支持事务处理
2015-07-23 14:55
344 查看
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 = 10; table.Columns.Add(column); //MobileArea column = new DataColumn(); column.ColumnName = "MobileArea"; column.DataType = System.Type.GetType("System.String"); column.MaxLength = 30; table.Columns.Add(column); //MobileType column = new DataColumn(); column.ColumnName = "MobileType"; column.DataType = System.Type.GetType("System.String"); column.MaxLength = 20; table.Columns.Add(column); //AreaCode column = new DataColumn(); column.ColumnName = "AreaCode"; column.DataType = System.Type.GetType("System.String"); column.MaxLength = 10; table.Columns.Add(column); //PostCode column = new DataColumn(); column.ColumnName = "PostCode"; column.DataType = System.Type.GetType("System.String"); column.MaxLength = 8; table.Columns.Add(column); #endregion while ((line = sr.ReadLine()) != null) { string[] mobileMsg = line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); int Id = Convert.ToInt32(mobileMsg[0]); string MobileNumber = mobileMsg[1].Trim('"'); string MobileArea = mobileMsg[2].Trim('"'); string MobileType = mobileMsg[3].Trim('"'); string AreaCode = mobileMsg[4].Trim('"'); string PostCode = mobileMsg[5].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建立表空间和用户
- Oracle用户解锁的三种办法及默认的用户与密码
- MyBatis针对ORACLE的批量插入
- Oracle CheckPoint进程
- Linux下完美卸载Oracle教程
- oracle表复制
- 在Oracle表数据和xml文件间相互导入导出
- Oracle删除重复记录只保留一条数据的几种方法
- Oracle数据库实现获取前几条数据的方法
- oracle删除重复记录保留一条记录
- Oracle 精简绿色版客户端的配置
- oracle11g exp不导出空表
- oracle安装成功后,更改字符集
- Oracle常用知识小结
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
- Linux导入导出Oracle数据库
- Oracle删除归档日志
- oracle下载地址
- Oracle 11g R2之Dataguard搭建物理standby
- oracle中的sql语句中timestamp与字符串转换