java - 我使用 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.更新();这很好用,数据正确更改。
为什么会发生这种情况?
解决方案
正如评论中所建议的,您需要更改 UPDATE 语句:
String sql = "update ROOM set room.object= ? where room.roomid = ?";
该LIKE value
表达式用于匹配部分字符串。例如,LIKE 'ma%'
当您想要查找所有以字母开头的字符串时使用ma
(例如mat
, man
, map
)。
推荐阅读
- xml - 如何通过 Spring Boot Rest 在 XML 中添加指向 xsl 视图的链接?
- wordpress - 在 WooCommerce 中,我可以让“购物车”仅出现在 SHOP 部分以及客户实际在购物车中添加商品时出现吗?
- c++ - 逐行重复数字,下一个数字显示的次数以逗号分隔
- apache-kafka - 清洁被中止并在kafka中暂停
- java - 如何将内部元素从流添加到流?
- javascript - 使用 es6 根据匹配和不匹配的值对数组进行排序
- reactjs - 在某些组件中使用 HOC,而不是 Redux 中的每个组件
- mongodb - 如何将结果分成 2 个字段
- sql - 用作“IN”比较的列表为空时出错
- bash - 是否可以直接在 bash 中为 git repo 输入密码?