日期:2014-05-20  浏览次数:20893 次

数据库更新操作不成功,也不报错。大家看看。
代码如下:
getSeatSql = "select top " + ticketCount + " seatnum,state"
+ " from dbus_seat with(index(seat),updlock) "
+ " where busnum='" + busnum_seat
+ "' and setoutdate='" + setoutdate + "' and state=0";
try {
conn.setAutoCommit(false);
rs = s.executeQuery(getSeatSql);
while (rs.next()) {
seats.add(rs.getInt("seatnum") + "");
seatstatus.add(rs.getInt("state") + "");
}
rs.close();
if (seats.size() < ticketCount) {// 未占到座位
throw new Exception("该座位已售出,或没有足够的座位");
} else {// 占到了座位
String updateSeatSql = "update dbus_seat set state=1 where busnum='"
+ busnum_seat
+ "' and setoutdate='"
+ setoutdate
+ "' ";
for (int i = 0; i < seats.size(); i++) {
String sn = seats.get(i);
String updatesql = updateSeatSql + " and seatnum=" + sn;
s.executeUpdate(updatesql);
}
System.out.println("车次"+busnum_seat+"修改座位状态成功,座位:"+seats);
}
conn.commit();// 修改座位状态,占座位完成
} catch (Exception f) {
conn.rollback();
System.out.println("车次"+busnum_seat+"修改座位状态失败,座位:"+seats);
throw f;
}

这段代码在运行高峰期的时候,偶尔会出现s.executeUpdate(updatesql);这条语句执行没有效果,但是也没有报错。大家帮忙看看,是什么问题呀。

------解决方案--------------------
高峰时候遇见这种情况,那估计是你的同步没做好, 有可能是其他的地方的修改语句没有提交,造成了线程阻塞