首页 > 数据库 >java操作Oracle 方式一 ( 连接-》操作-》断开连接 )

java操作Oracle 方式一 ( 连接-》操作-》断开连接 )

时间:2024-07-15 13:08:47浏览次数:10  
标签:断开连接 ps jsonObj java String setString toString sql Oracle

连接-》操作-》断开连接

这种方式的特点是 每次都是新的连接,单线程,缺点是 网络环境不好时连接oracle比较费时。

OracleUtil.java 基础类代码 详见:https://www.cnblogs.com/hailexuexi/p/18302732

完整代码

dbCDR.java

package com.JavaRabbitMQToDataBase.dbOracle;

import java.util.UUID;
import com.alibaba.fastjson.JSONObject;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class dbCDR  {
    protected static final Logger logger = LoggerFactory.getLogger(dbCDR.class);
    //连接对象
    Connection connection=null;
    //创建预编译对象
    PreparedStatement ps=null;
    //创建结果集
    ResultSet rs = null;
    //CDR 参数
    private String _eventJson;

    public dbCDR(String eventJson){
        _eventJson=eventJson;
    }//插入
    public int insert() {
        logger.debug("dbCDR insert() CDR 准备执行SQL" + this._eventJson);
        int result = 0;
        String sql = "";
        String callid ="";
        String callfrom ="";
        if (OracleUtil.oracle_open.equals("true") == false) {
            logger.warn("dbCDR insert() CDR 没有启动连接数据库 " + OracleUtil.oracle_open + " " + _eventJson);
            return -2;
        }
        try {
            connection = OracleUtil.getCon();//连接对象

            //{"event":"NewCdr","callid":"1627349862.433","timestart":"2021-07-27 09:37:42","callfrom":"1008","callto":"1009"
            // ,"callduraction":"16","talkduraction":"11","srctrunkname":"","dsttrcunkname":"","pincode":"","status":"ANSWERED"
            // ,"type":"Internal","callPath":"","recording":"20210727093747-1627349862.433-1008-1009-Internal.wav","didnumber":"","agentringtime":"0"
            // ,"sn":"369264842620"}
            String strId = UUID.randomUUID().toString();//唯一码
            JSONObject jsonObj = JSONObject.parseObject(this._eventJson);//

            String event = jsonObj.get("event").toString();
            callid = jsonObj.get("callid").toString();
            String timestart = jsonObj.get("timestart").toString();
            //主叫号码
            callfrom = jsonObj.get("callfrom").toString();
            //被叫号码
            String callto = jsonObj.get("callto").toString();
            //如果有 6703(1008) 时将队列号6703 去掉
            if(callto.contains("(")==true){
                callto = callto.substring(5);  //6703(
                callto = callto.substring(0, callto.indexOf(")"));//去掉 )
            }

            String callduraction = jsonObj.get("callduraction").toString();
            String talkduraction = jsonObj.get("talkduraction").toString();
            String srctrunkname = jsonObj.get("srctrunkname").toString();
            String dsttrcunkname = jsonObj.get("dsttrcunkname").toString();

            String pincode = jsonObj.get("pincode").toString();
            String status = jsonObj.get("status").toString();
            String type = jsonObj.get("type").toString();
            String recording = jsonObj.get("recording").toString();
            String didnumber = jsonObj.get("didnumber").toString();

            String agentringtime = jsonObj.get("agentringtime").toString();
            String sn = jsonObj.get("sn").toString();
            String callPath = jsonObj.get("callPath").toString();

            String sessionid = "";// 
            if(jsonObj.containsKey("sessionid")==true){
                sessionid=jsonObj.get("sessionid").toString();
            }
            String agentname = "";
            if(jsonObj.containsKey("agentname")==true){
                agentname=jsonObj.get("agentname").toString();
            }

            sql = "insert into CTI_CDR ";
            sql = sql + " ( ID,event,callid,timestart,callfrom, ";
            sql = sql + " callto,callduraction,talkduraction,srctrunkname,dsttrcunkname, ";
            sql = sql + " pincode,status,type,recording,didnumber, ";
            sql = sql + " agentringtime,sn,callpath ,agent_name,sessionid) ";
            sql = sql + " values(?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?  )";

            logger.error("dbCDR insert() CDR 准备执行SQL  " + sql + " " );

            ps = connection.prepareStatement(sql);
            ps.setString(1, strId);
            ps.setString(2, event);
            ps.setString(3, callid);
            ps.setString(4, timestart);
            ps.setString(5, callfrom);

            ps.setString(6, callto);
            ps.setString(7, callduraction);
            ps.setString(8, talkduraction);
            ps.setString(9, srctrunkname);
            ps.setString(10, dsttrcunkname);

            ps.setString(11, pincode);
            ps.setString(12, status);
            ps.setString(13, type);
            ps.setString(14, recording);
            ps.setString(15, didnumber);

            ps.setString(16, agentringtime);
            ps.setString(17, sn);
            ps.setString(18, callPath);

            ps.setString(19, agentname);
            ps.setString(20, sessionid);
            //logger.debug("dbCDR insert() CDR 执行SQL!" + ps.toString()  );

            result = ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("dbCDR insert() CDR 执行SQL出错! " + result + " "+ callid+ " "+callfrom+  " " + sql + " " + e.toString());
        } finally {
            try {
                if (ps != null) { // 
                    ps.close();////ps需要关闭,不然会出现 java.sql.SQLException: ORA-01000: 超出打开游标的最大数
                }
                OracleUtil.closeCon(connection);
            } catch (SQLException e) {
                e.printStackTrace();
                logger.error("dbCDR insert() CDR 关闭连接出错!" + result + " "+ callid+ " "+callfrom+ " " + " " + sql + " " + e.toString());
            }
        }
        logger.debug("dbCDR insert() CDR 执行SQL成功!" + result + " "+ callid+ " "+callfrom+ " " + sql);
        return result;
    }
    
    //查询
    public void select(){
        connection = OracleUtil.getCon();
        String sql = "select ID,AGENT_NAME,DATE_TIME,STATUS from CTI_AGENT_WORK_REST";
        try {
            ps = connection.prepareStatement(sql);
            rs = ps.executeQuery();
            while (rs.next()){
                int id = rs.getInt(1);
                String AGENT_NAME = rs.getString(2);
                String DATE_TIME = rs.getString(3);
                String STATUS= rs.getString(4);
                System.out.println("ID:"+id + " AGENT_NAME:"+AGENT_NAME+" DATE_TIME:"+DATE_TIME+" STATUS:"+STATUS);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                OracleUtil.closeCon(connection);
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    //修改
    public int update(){
        connection = OracleUtil.getCon();
        String sql = "update student set name = ?,gender = ? where id = ?";
        int result = 0;
        try {
            ps = connection.prepareStatement(sql);
            ps.setString(1,"老张");
            ps.setString(2,"男");
            ps.setInt(3,2);
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                OracleUtil.closeCon(connection);
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return result;

    }

    //删除
    public int delete(){
        int result = 0;
        connection = OracleUtil.getCon();
        String sql = "delete from student where id = ?";
        try {
            ps = connection.prepareStatement(sql);
            ps.setInt(1,1);
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                OracleUtil.closeCon(connection);
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return result;
    }
 
}

调用方法

dbCDR objCDR = new dbCDR(eventJson);
objCDR.insert();

 

标签:断开连接,ps,jsonObj,java,String,setString,toString,sql,Oracle
From: https://www.cnblogs.com/hailexuexi/p/18302948

相关文章

  • java操作Oracle 方式二 ( 多线程 )
    多线程方式 也是 连接-》操作-》断开连接  这样的操作过程,只是采用了多线程这种方式的特点是每次都是新的连接,多线程,解决了网络环境不好时连接oracle比较费时,影响主程序其它功能的响应。OracleUtil.java基础类代码详见:https://www.cnblogs.com/hailexuexi/p/1830273......
  • java连接oracle执行sql语句
    一个简单的示例importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;publicclassOracleJdbcExample{publicstaticvoidmain(String[]args){//Oracle数据库的JDBCURL,用户名和密码......
  • Java计算机毕业设计教学资料管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:在教育信息化的大潮中,教学资料作为知识传播的重要载体,其管理与利用效率直接影响到教学质量与学生学习效果。传统的教学资料管理方式多依赖于纸质文档......
  • 关于java装饰器模式在ai生成举例不可用的问题
    定义首先描述下定义,然后举例说明。网上定义装饰器模式(DecoratorPattern)是一种结构型设计模式,它允许向对象添加新的功能或职责,同时保持对象类的原始结构。这种模式提供了一种替代继承的机制来扩展功能,因为继承通常是在编译时固定的,而装饰器模式则允许在运行时动态地添加......
  • Java中的静态与动态绑定
    Java中的静态与动态绑定大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!静态与动态绑定的基本概念在面向对象编程中,静态绑定(StaticBinding)和动态绑定(DynamicBinding)是Java中重要的概念。本文将深入探讨这两种绑定方式的特点、使用场景以及在实际开发中......
  • Java毕业设计-基于springboot开发的医院后台管理系统设计与实现-毕业论文(附毕设源代码
    https://download.csdn.net/download/u014740628/88922529医院后台管理系统设计与实现应用技术概述在信息时代背景下,医院后台管理系统的开发成为提升医疗信息处理效率的关键。本文介绍的系统采用B/S架构,结合了MySQL数据库和Java语言进行实现,确保了系统的稳定性和数据的安......
  • Java中的装箱与拆箱详解
    Java中的装箱与拆箱详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!装箱与拆箱的基本概念在Java中,装箱(Boxing)和拆箱(Unboxing)是指将基本数据类型与它们对应的包装类之间进行相互转换的过程。Java为每种基本数据类型提供了对应的包装类,如Integer对应in......
  • Java毕业设计-基于springboot开发的医院药品管理系统设计与实现-毕业论文(附毕设源代码
    Java毕业设计-基于springboot开发的医院药品管理系统设计与实现-毕业论文(附毕设源代码)https://download.csdn.net/download/u014740628/88922533医院药品管理系统开发实践应用技术概述在数字化时代背景下,医院药品管理系统的开发利用了当前流行的技术栈,以满足现代医疗行业......
  • 使用Java实现OAuth2.0认证
    使用Java实现OAuth2.0认证大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!OAuth2.0认证简介OAuth2.0是一种开放标准的授权协议,允许用户授权第三方应用访问其资源,而无需将用户名和密码提供给第三方应用。在Web开发中,OAuth2.0已经成为一种常见的认证机制,用......
  • JavaScript中的new map()和new set()使用详细(new map()和new set()的区别)
    Map对象是一种键值对的集合,其中的键是唯一的,值可以重复。newSet():在JavaScript中,newSet()是用来创建一个新的Set对象的语法。Set对象是一种集合,其中的值是唯一的,没有重复的值。newSet()可以用来创建一个空的Set对象,在创建时传入一个数组或类数组对象,Set会自动去......