欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > oracle 中创建 socket客户端 监听数据库变动,返回数据给服务端!!!

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

2025/7/26 5:39:33 来源:https://blog.csdn.net/qq_31816945/article/details/103717831  浏览:    关键词: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
declarereval varchar2(256);returnId varchar2(256);
BEGINdbms_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 THENSELECT 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);}}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词