6

例如:

select name from person where id=2;

我想知道这一行是否存在,并根据它的存在执行某项任务。我想使用 jdbc 来做到这一点。

4

4 回答 4

16

用于PreparedStatement调用此选择查询,

成功执行查询后,您将ResultSet返回一个实例,您可以通过调用来检查next()它是否返回 true,这意味着选择了一行

if(resultSet.next()){
   //yes exist
}
于 2012-07-02T06:15:03.223 回答
4
   Connection conn = DriverManager.getConnection(url , databaseUserName, databasePassword);
            Statement stmt = conn.createStatement();
            ResultSet result = null;           
            result = stmt.executeQuery("select name from person where id=2;");
            if(!result.isBeforeFirst()){
                System.out.println("No Data Found"); //data not exist
            }
           else{
              // data exist
              }   

如果光标在第一行之前,isBeforeFirst() 返回 true;如果光标位于任何其他位置或结果集不包含任何行,则返回 false

于 2012-07-02T06:19:15.933 回答
4

ResultSet中没有hasNext()方法。next()方法将光标移动到下一行,如果有行则返回 true。

if(resultSet.next()){
  //do something

}
else{
  //no next row found

}
于 2012-07-02T06:20:07.020 回答
0

您还可以使用 JdbcTemplate.queryForList如果没有行则返回一个空列表。

db.queryForList(sql, params).isEmpty();
于 2018-11-20T18:30:16.237 回答