首页 > 解决方案 > 我使用 JDBC 更新数据,但它不起作用

问题描述

我尝试使用 JDBC 来插入和更新数据。插入函数运行良好,但更新函数并没有改变数据库中的任何内容。运行时也不例外。

我确定 RoomID 存在并且它是正确的。

这是我的插入功能,这行得通

private static Connection conn;
private PreparedStatement pres;

public void saveRoom(Room room) {
    String sql = "insert into ROOM(roomid, object) values(?,?)";
    try {
        pres = conn.prepareStatement(sql);
        pres.setObject(1, room.getRoomId());
        pres.setObject(2, roomToBlob(room));
        pres.addBatch();
        pres.executeBatch();
        conn.commit();
        if (pres != null) {
            pres.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

这是我的更新功能,这不起作用。也不例外,但数据不会改变。

private static Connection conn;
private PreparedStatement pres;

public void updateRoom(ArrayList<Room> RoomList) {
    String sql = "update ROOM set room.object= ? where room.roomid like ?";
    try {
        pres = conn.prepareStatement(sql);
        for (int i = 0; i < RoomList.size(); i++) {
            pres.setObject(1, roomToBlob(RoomList.get(i)));
            pres.setObject(2, RoomList.get(i).getRoomId());
            pres.addBatch();
        }
        pres.executeBatch();
        conn.commit();
        if (pres != null) {
            pres.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

我找到了问题并解决了它,但我仍然不知道为什么会这样。我的解决办法是:</p>

A 类有一个 Arraylist 列表 public void update(){database.updateRoom(list);}

B类: A a = new A(); 数据库.updateRoom(a.getList()); 这没有异常,但数据库中没有数据更改。

a.更新();这很好用,数据正确更改。

为什么会发生这种情况?

标签: javajdbchsqldb

解决方案


正如评论中所建议的,您需要更改 UPDATE 语句:

String sql = "update ROOM set room.object= ? where room.roomid = ?";

LIKE value表达式用于匹配部分字符串。例如,LIKE 'ma%'当您想要查找所有以字母开头的字符串时使用ma(例如mat, man, map)。


推荐阅读