[英]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.