简单问题送分,关于网上订票系统的票数的更新怎么做?
网上订票,防止更新出现错误,写的代码总有点不放心
stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(
"SELECT TICKETNUM FROM DB_MOVIE_TICKET WHERE TICKID="
+ tickid );
rs.absolute(1);
if (rs.getInt("TICKETNUM") < 2)//每次订两张
throw new SQLException("电影票已经被订购完");
rs.updateLong("TICKETNUM", rs.getInt("TICKETNUM")-2);
rs.updateRow();在SQL语句中加上“for update” 后变的好慢啊,而且最后一句
rs.updateRow();走不过去:(
网上订票,防止更新出现错误,写的代码总有点不放心
stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(
"SELECT TICKETNUM FROM DB_MOVIE_TICKET WHERE TICKID="
+ tickid );
rs.absolute(1);
if (rs.getInt("TICKETNUM") < 2)//每次订两张
throw new SQLException("电影票已经被订购完");
rs.updateLong("TICKETNUM", rs.getInt("TICKETNUM")-2);
rs.updateRow();在SQL语句中加上“for update” 后变的好慢啊,而且最后一句
rs.updateRow();走不过去:(
2.
if (rs.getInt("TICKETNUM") < 2)//每次订两张
throw new SQLException("电影票已经被订购完");
rs.updateLong("TICKETNUM", rs.getInt("TICKETNUM")-2);
改为
int nCount = rs.getInt("TICKETNUM") ;
if (nCount < 2)//每次订两张
throw new SQLException("电影票已经被订购完");
rs.updateLong("TICKETNUM", nCount -2);
这样少读了一次数据库
3.sql中for update只用于触发器的创建与数据库游标的创建啊,与你现在的操作没有关系.