JSP登陆界面 密码修改问题

//接收参数Stringid=request.getParameter("id");Stringpassword=request.getParameter("passwo... // 接收参数
String id=request.getParameter("id");
String password = request.getParameter("password") ;
String password1 = request.getParameter("newpassword") ;
String password2 = request.getParameter("newpassword1") ;
%>
<%
// 更新person表中的数据
String oldpassword="select password from person where id=?";
String sql = "UPDATE preson set password=? WHERE id=?" ;
if(oldpassword.equals(password)){

if(password2.equals(password1)){
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1,password1) ;
pstmt.setString(2,id);
pstmt.executeUpdate() ;
pstmt.close() ;
conn.close() ;
// 如果修改成功,则肯定能执行到此段代码
flag = true ;
}
catch(Exception e)
{}
%>是不是oldpassword 语句错了
if(oldpassword.equals(password)){

if(password2.equals(password1)){
运行时总是卡在这个语句 求高手指导。
展开
 我来答
百度网友bae7667
2012-04-26 · TA获得超过936个赞
知道小有建树答主
回答量:404
采纳率:100%
帮助的人:140万
展开全部
你想用外部输入的password和你数据库里的oldpassword校验,那你要先搜出来结果再判断啊。。。
你代码里oldpassword是一个字符串,内容是个SQL语句。。。人家输入的密码基本没可能是这个,所以肯定这个if判断进不去,也就进不了下面链接数据库的代码段。不是这里卡,而是程序应该执行完了,只是if条件不符合,直接跳过去了。
追问
那你有没有这个范例呢。。			String oldpassword=null;
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
oldpassword="select password from person where id=id";
System.out.println("oldpassword");
conn.close();
// 如果修改成功,则肯定能执行到此段代码
}
catch(Exception e)
{}
改成这样还是不行
追答
你的代码,定义了数据库连接,先不说能不能联到数据库,首先有2个大问题。。
1 conn.close();必须放finally里关闭,否则任何一家公司的面试官看到这个直接把你分先扣到60.
2 oldpassword="select password from person where id=id"; 只是定义出了查询语句,你没有真正去数据库去查询。你想要对应用户的密码,但又不去查数据库怎么可能有值。
我的是用jndi联数据库的,这种自己写jdbc的学习代码网上一找一堆。。关键字:java jdbc连接数据库....
又蒙B了
2012-04-26
知道答主
回答量:23
采纳率:0%
帮助的人:11万
展开全部
你还在不了?
你再写一个方法专门是获取旧密码的方法
public String[] getOldpassword(String id){
String s[]=new String(1);
String oldpassword="select password from person where id=?";
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1,id) ;
pstmt.execute() ;
s[0]=pstmt.getString("password");
pstmt.close() ;
conn.close() ;
}
catch(Exception e)
{}
}
在你这个方法里调用新的这个方法
String[] s = this.getOldpassword(id);
String oldpasswoord = s[0];
拿它跟String password = request.getParameter("password") ;比较才对
更多追问追答
追问
要不我把代码传给你。你帮我测试下吧。 这个public String[] getOldpassword(String id)//()报错 语法错误
追答
String oldpassword="select password from person where id=?";
这句话是干什么用的 先告诉我呗
查询是吧 那返回的结果呢
提交到数据库了吗
代码没发全?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gegecuicui
2012-04-26 · TA获得超过616个赞
知道小有建树答主
回答量:802
采纳率:0%
帮助的人:490万
展开全部
这些都是放在那里的?
你的 password2 可能是null 空对象怎么会有equals方法那? null to str
追问
不是空 password2有输入值一样报错
追答
你 System.out.println(password2);  试试 可能你得到的对象不对就会为空
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ayanami365
2012-04-26 · TA获得超过937个赞
知道小有建树答主
回答量:1777
采纳率:0%
帮助的人:717万
展开全部
System.out.print(oldpassword==null);

看看是不是空的
追问
oldpassword 中的SQL语句是不是错了啊  好像都没连接到数据库 就先执行了
追答
没有错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式