关于rs.getString的返回值!!

speed521 2010-05-19 10:52:29
//根据用户名找到密码
public String nametopwd(){
DBConnect dbc=null;
String userpwd=null;
try{
dbc=new DBConnect();
dbc.prepareStatement("SELECT password from user WHERE name=?");
dbc.setBytes(1,name.getBytes("GB2312"));
rs = dbc.executeQuery();
if(rs.next()){
userpwd=rs.getString("password");
}
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
dbc.close();
}catch(Exception e){
e.printStackTrace();
}
}
return userpwd;
}

我写的一个方法,但是我就不明白,为什么调用在页面时候,显示的是空值呢?
NULL
求人解答!!!
...全文
1063 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
speed521 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 happykeke 的回复:]
if(password!=dispuser.nametopwd())?
比较字符串 不是 equals()吗
[/Quote]
我真晕了,就这地方出错了,哎,看来我还是太菜了
谢谢你们了,我在也不问这样的问题了
我现在已经郁闷无比了
HappyKeKe 2010-05-20
  • 打赏
  • 举报
回复
if(password!=dispuser.nametopwd())?
比较字符串 不是 equals()吗
speed521 2010-05-20
  • 打赏
  • 举报
回复
现在的问题不是语句的问题了
而是显示值的问题,我刚才试了下
让password和dispuser.nametopwd()在页面上同时显示
结果值是一样的
但为什么if(password!=dispuser.nametopwd())还要执行呢
难道是编码问题吗?
reui 2010-05-20
  • 打赏
  • 举报
回复

//根据用户名找到密码
public String nametopwd(){
DBConnect dbc=null;
String userpwd=null;
try{
dbc=new DBConnect();
dbc.prepareStatement("SELECT password from user WHERE name=?");
dbc.setBytes(1,name.getBytes("GB2312"));
rs = dbc.executeQuery();

还有的就是,你这里头都没有setString(1,name)进去,这句话dbc.setBytes(1,name.getBytes("GB2312")),只是编码转换吧!?
查询的时候"name=?",当然是找不到结果.
lyz0622_1022 2010-05-20
  • 打赏
  • 举报
回复
进去的时候是什么数据?
sql运行出来的时候是什么数据?
这些都弄清楚了,我想问题也就解决了!!
reui 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 speed521 的回复:]
引用 12 楼 lrb0677 的回复:
引用 11 楼 speed521 的回复:
引用 10 楼 lrb0677 的回复:
你的name和password是从哪里传来的值?
在代码中好像没看到有赋值!?
再不行就调试一下...

从表单传过来的,那都没问题,
因为密码都可以修改,现在的问题是:pwd的值为什么是空的?

你这条SQL语句好像没有传值进去吧...

SQL……
[/Quote]


<%try{
String pwd=null;
String password=request.getParameter("password");
String password1=request.getParameter("password1");
DispUser dispuser=new DispUser();
dispuser.setName(userName);
pwd=dispuser.nametopwd();

哪里来的userName!?
Clover_yjj 2010-05-20
  • 打赏
  • 举报
回复
把你的参数name,name.getBytes("gb2312"),userpwd输出一下,看看都是什么东西。尤其看看name,不知道你的name怎么传的
speed521 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lrb0677 的回复:]
引用 11 楼 speed521 的回复:
引用 10 楼 lrb0677 的回复:
你的name和password是从哪里传来的值?
在代码中好像没看到有赋值!?
再不行就调试一下...

从表单传过来的,那都没问题,
因为密码都可以修改,现在的问题是:pwd的值为什么是空的?

你这条SQL语句好像没有传值进去吧...

SQL code

dbc.prepareSt……
[/Quote]


为什么这么说?我的jsp页面的这条语句 dispuser.setName(userName);
已经把name值赋予了,然后根据name值找到password不对吗?
reui 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 speed521 的回复:]
引用 10 楼 lrb0677 的回复:
你的name和password是从哪里传来的值?
在代码中好像没看到有赋值!?
再不行就调试一下...

从表单传过来的,那都没问题,
因为密码都可以修改,现在的问题是:pwd的值为什么是空的?
[/Quote]
你这条SQL语句好像没有传值进去吧...

dbc.prepareStatement("SELECT password from user WHERE name=?");
speed521 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lrb0677 的回复:]
你的name和password是从哪里传来的值?
在代码中好像没看到有赋值!?
再不行就调试一下...
[/Quote]
从表单传过来的,那都没问题,
因为密码都可以修改,现在的问题是:pwd的值为什么是空的?
reui 2010-05-20
  • 打赏
  • 举报
回复
你的name和password是从哪里传来的值?
在代码中好像没看到有赋值!?
再不行就调试一下...
-船长- 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wangchao523 的回复:]
引用 4 楼 huaye2007 的回复:

引用 1 楼 octer 的回复:
dbc.prepareStatement("SELECT password from user WHERE name=?");
dbc.setBytes(1,name.getBytes("GB2312"));
应该没查询到记录吧
为什么搞个编码转换?


这个是对的!


需要转码的话在刚接受……
[/Quote]

顶 这是小问题了 !!
-船长- 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 speed521 的回复:]
说明一下,数据库连接没问题
我做的是用户修改密码的模块,其实就是取用户密码的时候取不出
修改是可以的请看下面的代码完全可以运行

//修改用户密码
public void modifypassword(){
DBConnect dbc=null;
try{
dbc=new DBConnect();
dbc.prepareStatement("UPDATE user SET pas……
[/Quote]

顶 这是小问题了 !!
speed521 2010-05-20
  • 打赏
  • 举报
回复
我在jsp页面的代码


<%try{
String pwd=null;
String password=request.getParameter("password");
String password1=request.getParameter("password1");
DispUser dispuser=new DispUser();
dispuser.setName(userName);
pwd=dispuser.nametopwd();
if(password!=pwd){%>
<TABLE border="0" width=400 align=center cellpadding=0 cellspacing=1 bgcolor=<%=tablebgcolor%>>
<TR bgcolor=<%=trbgcolor%> height=25><TD align=center><FONT COLOR=red><B>错误</B></FONT></TD></TR>
<TR><TD align=center bgColor=<%=tdbgcolor%>><BR>原密码错误!<BR><A href="javascript:onclick=history.back()">[返回上页]</A></TD></TR>
</TABLE>
<%}
else{
dispuser.setPassword(password1);
dispuser.modifypassword();%>
<TABLE border="0" width=400 align=center cellpadding=0 cellspacing=1 bgcolor=<%=tablebgcolor%>>
<TR bgcolor=<%=trbgcolor%> height=25><TD align=center><FONT COLOR=red><B>成功</B></FONT></TD></TR>
<TR><TD align=center bgColor=<%=tdbgcolor%>><BR>密码修改成功!<BR><A href="javascript:onclick=history.back()">[返回上页]</A></TD></TR>
</TABLE>
<%}
}
catch(Exception e){
out.println("错误信息:"+e.getMessage());
}%>

大家看看有什么问题
wangchao523 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huaye2007 的回复:]

引用 1 楼 octer 的回复:
dbc.prepareStatement("SELECT password from user WHERE name=?");
dbc.setBytes(1,name.getBytes("GB2312"));
应该没查询到记录吧
为什么搞个编码转换?


这个是对的!
[/Quote]

需要转码的话在刚接受到参数时就转好,别在程序里面乱转。
后台打印出sql语句,在把你的sql拿到sql分析器里分析下,看下查出的结果。
speed521 2010-05-20
  • 打赏
  • 举报
回复
说明一下,数据库连接没问题
我做的是用户修改密码的模块,其实就是取用户密码的时候取不出
修改是可以的请看下面的代码完全可以运行

//修改用户密码
public void modifypassword(){
DBConnect dbc=null;
try{
dbc=new DBConnect();
dbc.prepareStatement("UPDATE user SET password=? WHERE name=?");
dbc.setBytes(1,password.getBytes("GB2312"));
dbc.setBytes(2,name.getBytes("GB2312"));
dbc.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
dbc.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
huaye 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 octer 的回复:]
dbc.prepareStatement("SELECT password from user WHERE name=?");
dbc.setBytes(1,name.getBytes("GB2312"));
应该没查询到记录吧
为什么搞个编码转换?
[/Quote]

这个是对的!
frankgoahead 2010-05-19
  • 打赏
  • 举报
回复
你确定数据库连接上了吗?自己写个程序测试一下
jinchun1234 2010-05-19
  • 打赏
  • 举报
回复
确定数据库有数据吗?
Octer 2010-05-19
  • 打赏
  • 举报
回复
dbc.prepareStatement("SELECT password from user WHERE name=?");
dbc.setBytes(1,name.getBytes("GB2312"));
应该没查询到记录吧
为什么搞个编码转换?

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧