簡體   English   中英

我使用JDBC更新數據,但是它不起作用

[英]I use JDBC to update the data but it doesn't work

我嘗試使用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();
    }
}

我找到了問題並解決了,但我仍然不知道為什么會這樣。 我的解決方案是:

類A具有一個Arraylist列表public void update(){database.updateRoom(list);}

B類:A a = new A(); database.updateRoom(a.getList()); 這沒有例外,但數據庫中沒有數據更改。

a.update(); 這很好,數據正確更改。

為什么會這樣?

如注釋中所建議,您需要更改UPDATE語句:

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

LIKE value表達式用於匹配部分字符串。 例如,當您要查找以字母ma開頭的所有字符串(例如matmanmap )時,可以使用LIKE 'ma%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM