java.sql.SQLException: No value specified for parameter 5

博客讨论了一个关于SQL更新语句的错误,原始代码中存在参数不匹配的问题,可能导致数据更新错误。修正后的代码移除了对主键sensor_id的修改,确保了主键的不变性,从而避免了潜在的数据完整性风险。此外,还强调了在执行数据库操作时应注意参数匹配和主键保护的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public int update(NodeMess nodeMess) {
        Connection conn = db.openConnection();
        String sql = "update sensor_node2 set sensor_id = ?,sensor_addr = ? , sensor_port = ? ," +
                "sensor_status = ?  where sensor_id = ?";
        int count = db.update(conn,sql,nodeMess.getSensor_id(),nodeMess.getSensor_addr(),nodeMess.getSensor_port(),
                nodeMess.getSensor_status());
        db.closeConnection(conn);
        return count;
    }

1.注意看sql语句占位符跟传入的参数个数是否一致
如上所示占位符“?”有5个,但是传入的参数粗心只写了4个
2.注意主键不能修改,即这里的sensor_id
在这里插入图片描述
改正后:

public int update(NodeMess nodeMess) {
        Connection conn = db.openConnection();
        String sql = "update sensor_node2 set sensor_addr = ? , sensor_port = ? ," +
                "sensor_status = ?  where sensor_id = ?";
        int count = db.update(conn,sql,nodeMess.getSensor_addr(),nodeMess.getSensor_port(),
                nodeMess.getSensor_status(),nodeMess.getSensor_id());
        db.closeConnection(conn);
        return count;
    }

就ok了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值