| 本帖最后由 宋浩 于 2012-6-7 16:38 编辑 
 首先,有两个表,一个是频道表:channel
 create table channel(
 cid varchar(20) not null primary key,
 name varchar(20)
 );
 另一个栏目表:program
 create table program(
 pid varchar(20) not null primary key,
 name varchar(20),
 cid varchar(20),
 foreign key (cid) references channel(cid)
 );
 删除的时候,如果要删除频道表的一条数据,那么需要将对应的栏目表下面的数据也要全部删除,否则就要全部不删除。
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 // TODO Auto-generated method stub
 
 //首先获取从客户端返回来的频道ID
 String cid=request.getParameter("cid");
 
 //连接数据库,并删除相应的数据
 ChannelDao cd=new ChannelDao();//这是处理频道表的dao
 ProgramDao pd=new ProgramDao();//这是处理栏目表的dao
 
 Connection cc=null;//频道表的连接
 Connection pc=null;//栏目表的连接
 
 try{
 
 cc=cd.getConn();//拿到频道表的连接
 pc=pd.getConn();//拿到栏目表的连接
 
 cc.setAutoCommit(false);//首先设置为false
 pc.setAutoCommit(false);
 
 boolean pflage=pd.delProgram(cid);//首先,进行栏目表的删除
 boolean cflage=cd.delChannel(cid);//其次,进行频道表的删除
 
 //当两条数据都成功才可以提交
 if(cflage==true&&pflage==true){
 pc.commit();
 cc.commit();//两条都成功了
 
 response.sendRedirect("channelManager.jsp");
 }else{
 pc.rollback();
 cc.rollback();//只要有一条数据不成功,两条都回滚
 request.setAttribute("information", "频道删除失败");
 request.getRequestDispatcher("fail.jsp").forward(request, response);
 }
 }catch(Exception e){
 e.printStackTrace();
 }
 }
 运行发生了异常:java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
 请问大家有什么好的解决方法吗?不用我的代码也行,只要告诉我怎么解决这种要么全部删除,要么全部不删除的问题就行。。谢谢大家了!!
 |