数据库查询不到东西

求知若渴CC 2014-09-25 09:23:53

public Users selectInfo(String username){
Users user = new Users();
con = DatabaseDAO.getConnection();
try{
pt = con.prepareStatement("SELECT * FROM users where username = ?");
pt.setString(1, username);
rs = pt.executeQuery();
if(rs.next()){
System.out.println("========进不来这里!=========================");
}

这个方法是从Action调的,Action运行没问题,别的方法跟这个差不多都没问题,但是到了这个方法if(rs.next())怎么都执行不进来,查询语句我弄到数据库里都能运行,实在看不出到底是哪里错了,求大神指点,从哪开始排查
...全文
213 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingfeng892 2014-09-26
  • 打赏
  • 举报
回复
看数据库中数据是不是对应
momo1406 2014-09-26
  • 打赏
  • 举报
回复
打断点,单步调试,看看connection是连上了,username的值是什么,rs的返回的是什么,或者是不是直接抛异常了
zgd77521 2014-09-26
  • 打赏
  • 举报
回复
经常出错的地方,表名 字段名 sql语句 赋值。
走在四季 2014-09-26
  • 打赏
  • 举报
回复
第一感觉,核实下数据库里的表名与列名。
The_end90 2014-09-26
  • 打赏
  • 举报
回复
我估计是没有这个username存在,输出一下username的值看看?是不是乱码了?
求知若渴CC 2014-09-26
  • 打赏
  • 举报
回复
引用 11 楼 u014027694 的回复:
[quote=引用 10 楼 u010449017 的回复:] [quote=引用 9 楼 u014027694 的回复:] 为什么你的输出结果对不上号?
这没事,我在这里精简了一下[/quote] 我不是说你的输出结果的条数,你输出username的那行为什么多了两个冒号 还有当前行数输出的怎么还有+号和感叹号 而且遍历结果集怎么没有看到循环[/quote] 嗯,我为了精简,复制过来把标点符号改动了一下的
七脉 2014-09-26
  • 打赏
  • 举报
回复
1.复制sql语句直接在数据库上查询,是否能或许正确结果 2.先把不用where过滤username,查看是否可以获取result 3.输出username是否为空或者乱码
节操在此 2014-09-26
  • 打赏
  • 举报
回复
引用 10 楼 u010449017 的回复:
[quote=引用 9 楼 u014027694 的回复:] 为什么你的输出结果对不上号?
这没事,我在这里精简了一下[/quote] 我不是说你的输出结果的条数,你输出username的那行为什么多了两个冒号 还有当前行数输出的怎么还有+号和感叹号 而且遍历结果集怎么没有看到循环
求知若渴CC 2014-09-26
  • 打赏
  • 举报
回复
引用 9 楼 u014027694 的回复:
为什么你的输出结果对不上号?
这没事,我在这里精简了一下
节操在此 2014-09-26
  • 打赏
  • 举报
回复
为什么你的输出结果对不上号?
求知若渴CC 2014-09-26
  • 打赏
  • 举报
回复
引用 楼主 u010449017 的回复:

public Users selectInfo(String username){
Users user = new Users();
con = DatabaseDAO.getConnection();
try{
pt = con.prepareStatement("SELECT * FROM users where username = ?");
pt.setString(1, username);
rs = pt.executeQuery();
if(rs.next()){
System.out.println("========进不来这里!=========================");
}

这个方法是从Action调的,Action运行没问题,别的方法跟这个差不多都没问题,但是到了这个方法if(rs.next())怎么都执行不进来,查询语句我弄到数据库里都能运行,实在看不出到底是哪里错了,求大神指点,从哪开始排查

我用了楼下回复的办法,username的值是有的,并且数据库里也有值的
public Users selectInfo(String username){
Users user = new Users();
System.out.println("username的值为::"+username);
con = DatabaseDAO.getConnection();
try{
pt = con.prepareStatement("SELECT * FROM users where username = ?");

pt.setString(1, username);
rs = pt.executeQuery();
rs.last(); // 将光标移动到最后一行
int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数
System.out.println("当前行号为::"+rowCount);
if(rs.next()){
System.out.println("=================================");
}

输出结果为:
求知若渴CC 2014-09-26
  • 打赏
  • 举报
回复
引用 1 楼 magi1201 的回复:
在 if(rs.next()){ 之前加上

rs.last(); // 将光标移动到最后一行
int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数

看看查询得到的结果数,如果结果数为0,那就说明是SQL赋值的问题了

这是最新情况,username确定有值,并且数据库里有的,还没有进if(rs.next()方法!
public Users selectInfo(String username){
Users user = new Users();
System.out.println("username的值为::"+username);
con = DatabaseDAO.getConnection();
try{
pt = con.prepareStatement("SELECT * FROM users where username = ?");

pt.setString(1, username);
rs = pt.executeQuery();
rs.last(); // 将光标移动到最后一行
int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数
System.out.println("当前行号为::"+rowCount);
if(rs.next()){
System.out.println("=================================");
}

输出的结果为
姜小白- 2014-09-25
  • 打赏
  • 举报
回复
在 if(rs.next()){ 之前加上

rs.last(); // 将光标移动到最后一行     
int rowCount = rs.getRow(); // 得到当前行号,即结果集记录数
看看查询得到的结果数,如果结果数为0,那就说明是SQL赋值的问题了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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