Welcome 微信登录

首页 / 数据库 / MySQL / 在Java中使用Oracle的merge语法

在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();    }Oracle 服务器端客户端字符集设置对应用程序的影响Oracle 连接出错最常见的原因相关资讯      Java教程 
  • Java检测端口的占用情况  (09/25/2013 09:59:24)
  • Java中Comparator接口的用法  (02/07/2013 08:42:50)
  • Java有理数的四则运算  (02/01/2013 13:10:30)
  • Java中List.remove报错Unsupported  (04/27/2013 09:38:16)
  • Java两个线程轮换打印1-100内的奇  (02/01/2013 13:14:53)
  • Java垃圾回收机制与引用类型  (01/28/2013 10:54:24)
本文评论 查看全部评论 (0)
表情: 姓名: 字数