读书人

后台删除某一帖子指定回复 的时候出了

发布时间: 2012-12-25 16:18:28 作者: rapoo

后台删除某一帖子指定回复 的时候出了点问题,
servlet关键代码
id 是回复的PK, content_id是帖子的PK

if(DBShowreview.deleteReview(Integer.parseInt(id),Integer.parseInt(content_id))){
resp.sendRedirect("reviewmanage.jsp?id="+content_id);
}
else{
resp.sendRedirect("review.jsp?id="+content_id);
}


deleteReview的代码
public static boolean deleteReview(int review_id,int content_id){
connect();
// 删除指定回复。
String sql = "delete from review where review_id=?";
// 让 帖子的回复次数减1.
String sql1 ="update content set count=count-1 where content_id=?";
try {
psmt =conn.prepareStatement(sql);
psmt.setInt(1,review_id);
int i = psmt.executeUpdate();
psmt =conn.prepareStatement(sql1);
psmt.setInt(1,content_id);
int j = psmt.executeUpdate();
if(0!=i&&0!=j){
return true;
}
psmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return false;
}

按道理是 操作之后,回复的信息应该没了 然后帖子的回复数-1, 但是操作后 回复数倒是-1了, 但是 回复的信息没删掉 为什么呢。
想要的结果是重定向到reviewmanage.jsp
但是结果是重定向到了review.jsp

[最优解释]
有可能你的帖子review_id没传递进来 、 方法才会return false的
仔细debug下
[其他解释]
你这个应该整个事物才行啊,要么全部成功要么全部失败。
[其他解释]
我初学 该怎么整

引用:
你这个应该整个事物才行啊,要么全部成功要么全部失败。

[其他解释]
确实是review_id 没有传进来。前台js代码,
 function show_delete()
{
var review_id;
var checkboxs = document.getElementsByName("delete");
for(var i = 0 ; i<checkboxs.length;i++)
{
if(checkboxs[i].checked)
{
review_id =checkboxs[i].value;
}
}
var r = confirm("确定要删除此回复么 ?");

if(r==true){
window.location.href="deletereview?id="+review_id+"&content_id="+<%=id%>;

}
}
这样拼接应该没错吧。 delete是个单选框的name,它的value值就是review_id
[其他解释]
诶,粗心大意了~~ 数据库里面提取出来的review 忘记 加id 搞的id 全为0........

读书人网 >Java Web开发

热点推荐