java - JDBC结果为空时如何返回false

标签 java mysql jdbc

在我的代码中,我需要当查询结果为空时,它应该返回false

我的代码:

public boolean user_bookValidationQuery(String userID, String bookID) {
    Connection con;    
    PreparedStatement ps;    
    String query = " select * from borrowed where userID=? and bookID=? ";    
    try {    
        con = DriverManager.getConnection(...);    
        ps = con.prepareStatement(query);    
        ps.setString(1, userID);    
        ps.setString(2, bookID);
        if (ps.execute()) {
            System.out.println("You can do it! , id DB");
            return true;
        } else return false;

    } catch (SQLException sqle) {
        sqle.printStackTrace();
        return false;
    }
}

现在对于 userIDbookID 的给定值,我在 mysql 控制台中尝试并看到它的结果为空,但在我的代码中它返回 true 仍然!

为什么这里不是假的?

最佳答案

你需要检查语句的结果......

ResultSet rs= ps.execute();
rs.isBeforeFirst()

如果 ResultSet 中没有行,将返回 false

所以你的代码应该是这样的:

try {
    con = DriverManager.getConnection(...);
    ps = con.prepareStatement(query);
    ps.setString(1, userID);
    ps.setString(2, bookID);
    ResultSet rs= ps.execute();

    if (!rs.isBeforeFirst() ) {    
          System.out.println("empty"); 
          return false;
    }else {
          System.out.println("with data"); 
          return true;
    }

} catch (SQLException sqle) {
    sqle.printStackTrace();
    return false;
}

关于java - JDBC结果为空时如何返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20053090/

相关文章:

java - Spring Boot Actuator - 无法禁用/信息端点

java - 一些基本的 JPA+Hibernate 问题?

java - classLoader.getResource(filename) 不返回存在的文件(返回空)

Java BitSet size() 行为

mysql - 在并行模式下使用同一事务运行多个查询是一种不好的做法吗?

mysql - 如果在远程运行 MySql 是 jdbc url 主机仍然是 localhost

java - 如何在 Java 中实现数据库 GUI

java - 获取 java.sql.SQLException : - ORA-01000: maximum open cursors exceeded for DML (Update Statement)

java应用程序查询数据库返回nullpointerException

java - 使用 JDBC 重试连接