[英]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
開頭的所有字符串(例如mat
, man
, map
)時,可以使用LIKE 'ma%'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.