当前位置:  数据库>oracle

在Java中使用Oracle的merge语法

    来源: 互联网  发布时间:2017-04-19

    本文导语: 在JAVA开发中通常碰到这样的需求,如果一条数据在表中已经存在,对其做update,如果不存在,将新的数据插入. 如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的...

JAVA开发中通常碰到这样的需求,如果一条数据在表中已经存在,对其做update,如果不存在,将新的数据插入.

如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,

同时性能也不好,要来回数据库两次.

使用merge的话则可以一条SQL语句完成.


下面是JAVA代码的示例:(这里简单起见,没有对异常连接关闭做处理)


    private static void testMerge() throws SQLException {

        // create table testtb(id int,val varchar2(10))
       
        String sqlstr = "merge into testtb "
                + "using (select ? as newid,? as newval from dual) newData "
                + "ON (testtb.id=newData.newid) "
                + "WHEN NOT MATCHED THEN "
                + "INSERT VALUES (newid,newval) "
                + "WHEN MATCHED THEN " + "UPDATE SET testtb.val=newData.newval";






        Connection conn = NONXADBUtil.getConnection("jdbc:oracle:thin:@147.151.100.19:1521:orcl", "user", "pwd");

        PreparedStatement sta = conn.prepareStatement(sqlstr);
       
        sta.setInt(1, 1);
        sta.setString(2, "new value");
       
        sta.executeUpdate();




        sta.close();
        conn.commit();
        conn.close();

    }


    
 
 

您可能感兴趣的文章:

  • Java表达式语法解析库 parboiled
  • 请问大家用什么开发java程序,我基本上学会了java语法,不知用什么来开发它?
  • java的语法说明
  • 请问java1.2和java2在语法方面有什么主要不同?
  • 一道考验基础的JAVA语法题
  • Java语法问题
  • java只懂最基本的语法,可以学习Jsp吗?
  • 寻找一种较为方便的java代码文本编辑器(比如带有语法及关键字变色功能)?
  • 请教Java语法问题
  • Java语法问题,以前没有见过这种形式
  • 求救!!java语法的小问题!!
  • 这种写法是否正确?JAVA语法问题!
  • 急求关于Java语法、函数的电子书
  • 学了JAVA的一些语法后得掌握那些基础的类呀,有没有专门的文章或书籍介绍这个呀?
  • 请问 pathclass设置正确 语法正确 编译通过 但在执行时 显示"Exception in thread "main" java.lang.NoClassDefFoundError"…………不解
  • JAVA语法里的VOID到底怎么用呀?我不知道什么时候加到类或者方法里!?
  • 学习好JAVA的基本语法而且能独立编一些程序以后,用JAVA语言开发系统会有很多种方向,比如有JSP,JAVASCRIT,JAVABEAN等等,朝哪个方向发
  • java 学习笔记(入门篇)_java的基础语法
  • DSL语法解析器生成器 dropincc.java
  • 为何JSP中的<%@ PAGE LANGUAGE=JAVASCRIPT%> 而<%%>中的语法为JAVA??
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • MySocketServer.java 使用或覆盖一个不鼓励使用的API???
  • java将类序列化并存储到mysql(使用hibernate)
  • JAVA中不赞成使用(Deprecated)的方法是否可以使用
  • unix/linux知识 iis7站长之家
  • java 可以使用 可是javac不可以使用。老兄帮帮忙
  • 哪位知道如何用JAVA进行图形文件的缩放? 是使用JAVA2D 或是有第三方的软件?
  • java堆栈类使用实例(java中stack的使用方法)
  • env查看环境变量,JAVA_HOME明明在里面,但使用nutch时还是提示JAVA_HOME not set?
  • 如何使用linux下的java编译器????
  • 如何使用java这个命令?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • com.Oracle.*;是指相对于当前目录下的COM下的ORACLE吗?java是怎么寻找PACKAGE的?
  • Linux系统下利用java连接Oracle 10G
  • 再问java 连接oracle 问题,急!
  • oracle和Java的连接,急!!
  • JAVA连接ORACLE问题(100分)
  • 怎么在java里调用一个oracle的procedure呢?
  • java与oracle
  • FSF反对Oracle起诉Google侵犯Java专利的起诉
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • 为什么在编译java程序的时候出现oracle.jdbc.driver不存在?急!!!
  • 如何获取java连接oracle的驱动?
  • 听ORACLE网站上说8.1.6有支持jdbc2.0的JAVA2驱动
  • java.lang.NoClassDefFoundError: oracle/jdbc/pool/OracleDataSource
  • 在java中能不能调用oracle的package
  • 求教 JAVA 连Oracle数据库。
  • 请教一个关于java中连接远程oracle数据库的问题
  • redhat 9 下安装 oracle9i 过程中,要求指定java目录,到底是哪一个目录?
  • 请问如何用Java从Oracle数据库中读取媒体文件,如图片,mpeg 等
  • 请教怎样在虚拟机中的linux系统安装 Java环境以及Oracle
  • 谁有java编写的连接 oracle9i的例子 急100
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3