【技能实训】DMS数据挖掘项目-Day14

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【技能实训】DMS数据挖掘项目-Day14

任务16

【任务16.1】数据的请求和响应

数据的请求和响应方法

程序设计

package com.qst.dms.service;
import com.qst.dms.net.Request;
import com.qst.dms.net.Response;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class DmsNetService {
    private  static  DmsNetService instance = new DmsNetService();
    private  DmsNetService(){
    }
    public static DmsNetService getInstance(){
        return  instance;
    }
    public static void  sendRequest(Socket socket, Request request) throws IOException{
        ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
        out.writeObject(request);
        out.flush();
    }
    public static Request receiveRequest(Socket socket) throws ClassNotFoundException, IOException{
        ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
        Request req = (Request)in.readObject();
        return req;
    }
    public static void sendResponse(Socket socket, Response response) throws IOException{
        ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
        out.writeObject(response);
        out.flush();
    }
    public static Response receiveResponse(Socket socket) throws IOException,ClassNotFoundException{
        ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
        Response res = (Response)in.readObject();
        return res;
    }
}

请求封装类

程序设计

package com.qst.dms.net;
import com.qst.dms.entity.MatchedDataBase;
import java.io.Serializable;
import java.util.List;
public class Request implements Serializable {
    private static final long serialVersionUID = 1L;
    public static final int DATA_TYPE_LOGREC = 1;
    public static final int DATA_TYPE_TRANSPORT = 2;
    private String time;
    private String ip;
    private int type;
    private List<MatchedDataBase> data;
    public Request(){
        super();
    }
    public Request(String  time, String ip, int type, List<MatchedDataBase> data){
        super();
        this.time=time;
        this.ip=ip;
        this.type=type;
        this.data=data;
    }
    /**
     * 获取
     * @return time
     */
    public String getTime() {
        return time;
    }
    /**
     * 设置
     * @param time
     */
    public void setTime(String time) {
        this.time = time;
    }
    /**
     * 获取
     * @return ip
     */
    public String getIp() {
        return ip;
    }
    /**
     * 设置
     * @param ip
     */
    public void setIp(String ip) {
        this.ip = ip;
    }
    /**
     * 获取
     * @return type
     */
    public int getType() {
        return type;
    }
    /**
     * 设置
     * @param type
     */
    public void setType(int type) {
        this.type = type;
    }
    /**
     * 获取
     * @return data
     */
    public List<MatchedDataBase> getData() {
        return data;
    }
    /**
     * 设置
     * @param data
     */
    public void setData(List<MatchedDataBase> data) {
        this.data = data;
    }
    public String toString() {
        return "Request{time = " + time + ", ip = " + ip + ", type = " + type + ", data = " + data + "}";
    }
}

响应封装类

程序设计

package com.qst.dms.net;
import java.io.Serializable;
public class Response implements Serializable {
    private static final long serialVersionUID = 1L;
    public static final int OK =200;
    public static final int ERROR = 500;
    private String time;
    private int state;
    public Response(){
        super();
    }
    public Response(String time, int state) {
        super();
        this.time = time;
        this.state = state;
    }
    /**
     * 获取
     * @return time
     */
    public String getTime() {
        return time;
    }
    /**
     * 设置
     * @param time
     */
    public void setTime(String time) {
        this.time = time;
    }
    /**
     * 获取
     * @return state
     */
    public int getState() {
        return state;
    }
    /**
     * 设置
     * @param state
     */
    public void setState(int state) {
        this.state = state;
    }
    public String toString() {
        return "Response{time = " + time + ", state = " + state + "}";
    }
}

【任务16.2】创建JTable的数据适配器类MatchedTableModel,直接从数据库获取数据。

在com.qst.dms.entity类下创MatchedTableModel,继承AbstractTableModel

// 使用ResultSet来创建TableModel
  private ResultSet rs;
  private ResultSetMetaData rsmd;
  // 标志位,区分日志和物流:1,日志;0,物流
  private int sign;
  public MatchedTableModel(ResultSet rs, int sign) {
    this.rs = rs;
    this.sign = sign;
    try {
      rsmd = rs.getMetaData();
    } catch (Exception e) {
      rsmd = null;
    }
  }
  // 获取表格的行数
  public int getRowCount() {
    try {
      rs.last();
      // System.out.println(count);
      return rs.getRow();
    } catch (Exception e) {
      return 0;
    }
  }
  // 获取表格的列数
  public int getColumnCount() {
    try {
      // System.out.println(rsmd.getColumnCount());
      return rsmd.getColumnCount();
    } catch (Exception e) {
      return 0;
    }
  }
  // 获取指定位置的值
  public Object getValueAt(int rowIndex, int columnIndex) {
    try {
      rs.absolute(rowIndex + 1);
      return rs.getObject(columnIndex + 1);
    } catch (Exception e) {
      return null;
    }
  }
  // 获取表头信息
  public String getColumnName(int column) {
    String[] logArray = { "日志ID", "采集时间", "采集地点", "状态", "用户名", "IP", "日志类型" };
    String[] tranArray = { "物流ID", "采集时间", "目的地", "状态", "经手人", "收货人",
        "物流类型" };
    return sign == 1 ? logArray[column] : tranArray[column];
  }
// 菜单项,注册监听
miShow.addActionListener(new ShowDataListener());
// 工具栏项 注册监听
btnShow.addActionListener(new ShowDataListener());

LogRecService类中增加方法readLogResult()

//获取数据库中的所有匹配的日志信息,返回一个ResultSet
  public ResultSet readLogResult() {  
          //获取匹配日志表中的所有数据,返回ResultSet 
         //创建语句时使用:
      //Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
  }

TransportService 类中增加方法readTransResult()

//获取数据库中的所有匹配的物流信息,返回一个ResultSet
  public ResultSet readTransResult() {  
          //获取匹配物流表中的所有数据,返回ResultSet 
//Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
  }

程序设计

package com.qst.dms.entity;
import javax.swing.table.AbstractTableModel;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class MatchedTableModel extends AbstractTableModel {
    // 使用ResultSet来创建TableModel
    private ResultSet rs;
    private ResultSetMetaData rsmd;
    // 标志位,区分日志和物流:1,日志;0,物流
    private int sign;
    public MatchedTableModel(ResultSet rs, int sign) {
        this.rs = rs;
        this.sign = sign;
        try {
            rsmd = rs.getMetaData();
        } catch (Exception e) {
            rsmd = null;
        }
    }
    // 获取表格的行数
    public int getRowCount() {
        try {
            rs.last();
            // System.out.println(count);
            return rs.getRow();
        } catch (Exception e) {
            return 0;
        }
    }
    // 获取表格的列数
    public int getColumnCount() {
        try {
            // System.out.println(rsmd.getColumnCount());
            return rsmd.getColumnCount();
        } catch (Exception e) {
            return 0;
        }
    }
    // 获取指定位置的值
    public Object getValueAt(int rowIndex, int columnIndex) {
        try {
            rs.absolute(rowIndex + 1);
            return rs.getObject(columnIndex + 1);
        } catch (Exception e) {
            return null;
        }
    }
    // 获取表头信息
    public String getColumnName(int column) {
        String[] logArray = { "日志ID", "采集时间", "采集地点", "状态", "用户名", "IP", "日志类型" };
        String[] tranArray = { "物流ID", "采集时间", "目的地", "状态", "经手人", "收货人",
                "物流类型" };
        return sign == 1 ? logArray[column] : tranArray[column];
    }
}
public static ResultSet readLogResult() {
    ResultSet matchedLogsResult = null;
    //获取匹配日志表中的所有数据,返回ResultSet
    //创建语句时使用:
    DBUtil db = new DBUtil();
    Connection conn = null;
    try {
        conn = db.getConnection();
        Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        // 查询匹配的日志
        String querySqlMatchedLogs = "SELECT * FROM matchlogs";
        matchedLogsResult = db.executeQuery(querySqlMatchedLogs,null);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return matchedLogsResult;
}
public ResultSet readTransResult() {
    //获取匹配物流表中的所有数据,返回ResultSet
    ResultSet matchedTransResult = null;
    //获取匹配日志表中的所有数据,返回ResultSet
    //创建语句时使用:
    DBUtil db = new DBUtil();
    Connection conn = null;
    ArrayList<MatchedTransport> matchedTrans = new ArrayList<>();
    try {
        conn = db.getConnection();
        Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        // 查询匹配的日志
        String querySqlMatchedLogs = "SELECT * FROM matchtransports";
        matchedTransResult = st.executeQuery(querySqlMatchedLogs);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return matchedTransResult;
}

服务端

客户端

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
监控 数据挖掘 数据库
【技能实训】DMS数据挖掘项目(完整程序) 1
【技能实训】DMS数据挖掘项目(完整程序)
123 0
|
存储 数据挖掘 测试技术
【技能实训】DMS数据挖掘项目(完整程序)2
【技能实训】DMS数据挖掘项目(完整程序)
83 0
|
6月前
|
前端开发 Java 数据管理
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
106 0
|
6月前
|
数据管理 程序员 人工智能
后台数据管理系统 - 项目架构设计【黑马程序员】
后台数据管理系统 - 项目架构设计【黑马程序员】
253 0
后台数据管理系统 - 项目架构设计【黑马程序员】
|
存储 数据挖掘 Java
【技能实训】DMS数据挖掘项目-Day15
【技能实训】DMS数据挖掘项目-Day15
71 0
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
100 1
|
4月前
|
SQL NoSQL 数据管理
数据管理DMS使用问题之如何批量导入MongoDB的数据文件
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
2天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
17天前
|
存储 人工智能 安全
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
瓴羊Dataphin连续俩年获得DAMA年度优秀数据治理产品奖,本次与DAMA联合发布“DAMA x 瓴羊 数据管理技能认证”,助力提升全民数据素养。
127 0
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
|
29天前
|
数据采集 安全 数据管理
通信行业数据治理:如何实现高效、安全的数据管理?
在未来的发展中,通信行业的企业应加强数据治理意识,提高数据治理能力;同时,积极开展跨行业的合作创新,共同推动行业的繁荣与发展。相信在不久的将来,通信行业将迎来更加美好的明天。