为什么让游标先向下在previous会报错?
如果我不进行判断(忽略查不到数据)
直接进行查找
结果没有问题。但是如果数据库里没有该数据,则没有提示。
求解怎么处理报错(下图是数据库信息)
下面是源码
package bookmanage_java;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class reader_namelist {
private DbUtil dbUtil = new DbUtil();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入读者姓名或姓名中的某个字:");
String readername = sc.nextLine();
reader_namelist r = new reader_namelist();
r.ser_readerlist(readername);
}
public void ser_readerlist(String rname) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
con = dbUtil.getCon();
String sql = "CALL reader_namelist(?)";
// 获取执行sql语句对象
pstmt = con.prepareStatement(sql);
// 准备参数
pstmt.setString(1, rname);
// 执行查询操作
rs = pstmt.executeQuery();
// 处理结果集
if (rs.next()) {
System.out.println("查询结果:");
System.out.println("readerno readername readertype readerdept");
rs.previous();
// 前移一步
} else {
System.out.println("查不到数据");
}
while (rs.next()) {
System.out.println(rs.getString(1).trim() + " " + rs.getString(2).trim() + " " + rs.getString(3).trim() + " " + rs.getString(4).trim());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package bookmanage_java;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbUtil1 {
//private String dbUrl="jdbc:mysql://localhost:3306/books?useUnicode=true&characterEncoding=UTF8";/bc连接
private String jdbcName= "com.mysql.cj.jdbc.Driver";//bc驱动程序
private String dbUrl="jdbc:mysql://localhost:3306/books?serverTimezone=PRC&useSSL=false&characterEncoding=gbk";
private String dbUserName="root";//用户名
private String dbPassword="123";//密码
/*获得连接对象 */
public Connection getCon() throws Exception{
Class.forName(jdbcName);//加载驱动
Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//创建连接对象
return con;
}
/*断开连接 */
public void closeCon(Connection con) throws Exception {
if (con!=null){
con.close();
}
}
/*主函数,连接数据库*/
public static void main(String[] args) {
DbUtil dbUtil=new DbUtil();
try {
dbUtil.getCon();
System.out.println("连接成功");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("连接失败");
}
}
}