当前位置: 首页 > article >正文

oracle 中创建 socket客户端 监听数据库变动,返回数据给服务端!!!

目录

      • socket客户端Java代码+ 函数+触发器
      • 1、触发器
      • 2、 函数
      • 3、 java 代码
      • 1、socket ========================
          • 5-1 socket 服务端

socket客户端Java代码+ 函数+触发器

(当数据库数据变动是触发socket客户端代码,将信息发送到服务端)

应用场景 ---- 第三方往中间库导入数据,我需要将中间库的新数据进行定位操作。

1、触发器

在这里插入图片描述

 create or replace TRIGGER TRIGGER1 
AFTER INSERT OR UPDATE OF ID,NAME ON TEST 
for each row
declare
 reval varchar2(256);
 returnId varchar2(256);
BEGIN
  dbms_output.put_line('触发器开始执行');
IF inserting THEN 
	SELECT SENDDATA(:new.id) into returnId FROM DUAL; -- 调用socket函数
  insert into TM_QFI_DATA_TABLE(id,name) values(:new.id,'添加数据触发');
  
ELSIF updating THEN
  SELECT SENDDATA(:new.id)  into returnId FROM DUAL;-- 调用socket函数
insert into TM_QFI_DATA_TABLE(id,name) values(:new.id,'修改数据触发');

END IF;

 dbms_output.put_line(returnId+“触发器调用结束”);
END;

2、 函数

在这里插入图片描述

CREATE OR REPLACE FUNCTION SENDDATA(dataid varchar2) 
RETURN VARCHAR2 AS 
language java 
name 'Client2.send(java.lang.String) return java.lang.String ';

3、 java 代码

在这里插入图片描述

import java.io.IOException;  
import java.net.InetSocketAddress;  
import java.nio.ByteBuffer;  
import java.nio.channels.SocketChannel;  

public class Client2 {  
    //需要一个Selector   
    public static void send(String dataid) {  
        //创建连接的地址  
        InetSocketAddress address = new InetSocketAddress("127.0.0.1", 8765);  
        //声明连接通道  
        SocketChannel sc = null;  
        //建立缓冲区  
        ByteBuffer buf = ByteBuffer.allocate(1024);  
        try {  
            //打开通道  
            sc = SocketChannel.open();  
            //进行连接  
            sc.connect(address);  
             
                //定义一个字节数组,然后使用系统录入功能:  
               byte[] bytes = dataid.getBytes("UTF-8");
                //把数据放到缓冲区中  
                buf.put(bytes);  
                //对缓冲区进行复位  
                buf.flip();  
                //写出数据  
                sc.write(buf);  
                //清空缓冲区数据  
                buf.clear();  
               
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if(sc != null){  
                try {  
                    sc.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
}   

1、socket ========================

5-1 socket 服务端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ServeltSocketTest {
    public static void main(String[] args) throws IOException {
        //初始化服务端socket并且绑定9999端口
        ServerSocket serverSocket = new ServerSocket(8765);
        //创建一个线程池
        ExecutorService executorService = Executors.newFixedThreadPool(100);
        while (true) {
        //等待客户端的连接
            Socket socket = serverSocket.accept();
            Runnable runnable = () -> {
                BufferedReader bufferedReader = null;
                try {
                    bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
                    //读取一行数据
                    String str;
                    //通过while循环不断读取信息,
                    while ((str = bufferedReader.readLine()) != null) {
                        //输出打印
                        System.out.println("客户端说:" + str);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            };
            executorService.submit(runnable);
        }
    }}

http://www.kler.cn/a/587661.html

相关文章:

  • 系统架构设计师—案例分析—数据库篇—关系型数据库设计
  • Java 并发编程——BIO NIO AIO 概念
  • [设计模式]1_设计模式概览
  • FastGPT原理分析-数据集创建第一步
  • RHCE(RHCSA复习:npm、dnf、源码安装实验)
  • 驾驭 DeepSeek 科技之翼,翱翔现代学习新天际
  • Harmony OS NEXT API 12核心API深度解析与开发实践
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(34)混元金斗装万物 - 0-1背包问题(二维DP)
  • Python 正则表达式模块 re
  • uniapp scroll组件下拉刷新异步更新数据列表
  • 基于SSM + JSP 的图书商城系统
  • 云原生服务网格:微服务通信的智能基础设施
  • Android安全支付-整体架构-KeyStore2-APP到Framework层的调用
  • Spring Cloud 与 Spring Cloud Alibaba 微服务开发流程详解:解耦之道
  • Qt6编译安装linguist语言家
  • JavaScript性能优化指南:聚焦DOM操作优化
  • Flink术语
  • 深度学习在医疗影像诊断中的应用与实现
  • 论文笔记 - ULTRA-SPARSE MEMORY NETWORK
  • python速通小笔记-------1.容器