查找数据库信息时多加一个判断是否存在语句用哪个方法实现

baidu_27685685 2016-05-18 09:37:13
//按照姓名查找学生,找到后显示其信息,查无此人显示错误信息。
public void findbyName()throws Exception{
System.out.println("=====进入按姓名查找学生信息功能=====");
PreparedStatement pstmt = null;
ResultSet rs = null;
System.out.print("请输入要查找的学生的名字: ");
@SuppressWarnings("resource")
Scanner scan = new Scanner(System.in);
name = scan.next();
String sql = "select id,name,math,os,java from student where name like ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, "%"+name+"%");
rs = pstmt.executeQuery();
while(rs.next()){
id = rs.getLong(1);
name = rs.getString(2);
math = rs.getLong(3);
os = rs.getFloat(4);
java = rs.getFloat(5);
System.out.print("id:"+ id+" ");
System.out.print("name:"+ name+" ");
System.out.print("math:"+ math+" ");
System.out.print("os:"+ os+" ");
System.out.println("java:"+ java+" ");
rs.close();
pstmt.close();
}
}
添加一个如果存在此账号就输出信息不存在就提示错误
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_27685685 2016-05-20
  • 打赏
  • 举报
回复
引用 7 楼 skgary 的回复:
rs = pstmt.executeQuery(); while(rs.next()){ 这个改成 rs = pstmt.executeQuery(); boolean found_somebody=false; while(rs.next()){ found_somebody = true; ..... }//end of the while .... if (!found_somebody) System.out.println("No-body found...."); ------ 如果选择了码农这个行当,就不要纠结有没有学过。
谢谢 可以了 这两天课有点多 都没时间拿电脑 才回帖 不好意思
anakin_feng 2016-05-19
  • 打赏
  • 举报
回复
引用 6 楼 baidu_27685685 的回复:
用各种方法总是有不同的效果但是就是没有想要的
如果说可以确定最多只有一个就可以去了,不是得话去掉if,不过需要在while里记录是否有,用于后面的判断
skgary 2016-05-19
  • 打赏
  • 举报
回复
rs = pstmt.executeQuery(); while(rs.next()){ 这个改成 rs = pstmt.executeQuery(); boolean found_somebody=false; while(rs.next()){ found_somebody = true; ..... }//end of the while .... if (!found_somebody) System.out.println("No-body found...."); ------ 如果选择了码农这个行当,就不要纠结有没有学过。
baidu_27685685 2016-05-18
  • 打赏
  • 举报
回复
用各种方法总是有不同的效果但是就是没有想要的
蜗牛爬珠峰 2016-05-18
  • 打赏
  • 举报
回复
先 if (rs.next()) 判断有没有记录。 如果有,rs.beforeFirst(),再用 while
baidu_27685685 2016-05-18
  • 打赏
  • 举报
回复
引用 4 楼 Molly_1994 的回复:
rs.next在if里执行过了,while执行的时候就没有了
那怎么能解决这个问题 删掉while吗
anakin_feng 2016-05-18
  • 打赏
  • 举报
回复
rs.next在if里执行过了,while执行的时候就没有了
baidu_27685685 2016-05-18
  • 打赏
  • 举报
回复
引用 1 楼 stephenhawke 的回复:
先 if (rs.next()) 判断有没有记录。 如果有,rs.beforeFirst(),再用 while
System.out.print("请输入要查找的学生的id: "); @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); id = scan.nextLong(); String sql0 = "select id from student where id = '"+id+"'"; Statement sta = con.createStatement(); ResultSet rs = sta.executeQuery(sql0); if(rs.next()) { while(rs.next()){ id = rs.getLong(1); name = rs.getString(2); math = rs.getLong(3); os = rs.getFloat(4); java = rs.getFloat(5); System.out.print("id:"+ id+" "); System.out.print("name:"+ name+" "); System.out.print("math:"+ math+" "); System.out.print("os:"+ os+" "); System.out.println("java:"+ java+" "); } } else { System.out.println("查无此人,请确认信息重新输入"); } rs.close(); sta.close(); 我用这段代码(部分代码) 当有这个信息时什么都不输出 没有的时候提示查无此人 输出哪里错了
baidu_27685685 2016-05-18
  • 打赏
  • 举报
回复
引用 1 楼 stephenhawke 的回复:
先 if (rs.next()) 判断有没有记录。 如果有,rs.beforeFirst(),再用 while
能具体一下吗 还没学过beforeFirst()这个方法

62,625

社区成员

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

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