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

最新文章

  1. tomcatPluginV321.zip
  2. 【ios】使用Block对POST异步操作的简单封装
  3. UIWebView内嵌网页 Xcode7.0以后的用法
  4. GCD中使用dispatch_after函数延迟处理任务
  5. Excel2003命令栏操作
  6. 【MS Office2013小技巧】Word中公式中的等号对齐
  7. SheetOffice控件使用分享
  8. C++虚表(V-Table)解析
  9. selenium+java破解极验滑动验证码
  10. Mybatis映射文件完整模板参照
  11. 用C++实现一个不能被继承的类
  12. Vue组件开发
  13. laravel使用 面向对象的方式绑定多对多的关系
  14. 影响solr性能的一些因素(附使用经验)
  15. iOS:定制自适应大小的透明吐司弹框
  16. stm32初做项目心得
  17. PAT 甲级 1008 Elevator (20)(代码)
  18. WCF路由服务
  19. jQuery插件初级练习1答案
  20. http put post请求区别

热门文章

  1. oracle commit之后的数据回滚
  2. POJ3641 Pseudoprime numbers(快速幂+素数判断)
  3. c# 基础复习1
  4. Vim光标移动
  5. C语言初学 使用while语句统计输入字符个数
  6. laravel跟jquery之间传输json数据
  7. android 应用在启动后进行全局的的初始化操作
  8. RSYSLOG没那么简单
  9. 戏说WSGI(Python Web服务网关接口)--[转载]
  10. JavaScript中的Array对象