折燕 2023-03-01 14:26 采纳率: 82.1%
浏览 49
已结题

java串口通信怎么把读出来的数据写进数据库

我用Java实现串口通信,成功从指定接口读出了数据,现在有什么方法可以实现把读出来的数据写进数据库吗?直接在下面加sql语句好像不行


```java
private static void readHoldingRegistersTest(ModbusMaster master, int slaveId, int start, int len) {
        String sql="";
        try {
            ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(slaveId, start, len);
            ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse)master.send(request);
            if (response.isException()) {
                System.out.println("Exception response: message=" + response.getExceptionMessage());
            } else {
                System.out.println("read success"+ Arrays.toString(response.getShortData()));
                /*String TARGET_ANGLE = response.getShortData().toString();
                Map<String,Object> param = new HashMap<>();
                param.put("TARGET_ANGLE",TARGET_ANGLE);
                sql = "update tracker_tracking set TARGET_ANGLE = :TARGET_ANGLE where COMMUNICATION_BOX_NAME='NCU1'";*/
                short[] list = response.getShortData();
                for (int i = 0; i < list.length; i++) {
                    System.out.println(list[i] + " hhhhhhh ");
                }
            }
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
    }

```

  • 写回答

3条回答 默认 最新

  • Web Security Loop 2023-03-01 14:32
    关注
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class SerialPortReader {
        
        // JDBC连接配置信息
        private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
        private static final String DB_USER = "root";
        private static final String DB_PASSWORD = "password";
        
        public static void main(String[] args) {
            
            // 创建数据库连接
            try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) {
                
                // 准备SQL语句
                String sql = "INSERT INTO data (value) VALUES (?)";
                PreparedStatement stmt = conn.prepareStatement(sql);
                
                // 读取串口数据,并将其写入数据库
                while (true) {
                    String data = readSerialPortData();  // 读取串口数据
                    stmt.setString(1, data);  // 将数据设置为SQL语句的参数
                    stmt.executeUpdate();  // 执行SQL语句,将数据插入到数据库中
                }
                
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        // 读取串口数据的方法
        private static String readSerialPortData() {
            // 读取串口数据的代码
            return "data";  // 返回读取到的数据
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月1日
  • 已采纳回答 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 给我一个openharmony跑通webrtc实现视频会议的简单demo项目,sdk为12
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题