rs.last();
if( rs.getRow() == 0 ){
//
}

解决方案 »

  1.   

    if ( !rs.next() ) {
    // resultset为空
    }
      

  2.   

    怎么会不行呢?
    rs.next()为false就是到了记录集的末尾啊。
    可能是你的数据库有一条记录,而且你检测的字段是空的。
      

  3.   

    to 楼主:
    大家口说无凭,我可以证明rs.next()是可以的.
    下面是测试代码,主要在testResultSetNull()方法,在oracle上测试没有问题.
    public class TestNullResultSet extends TestCase {
        static {
            try {Class.forName("oracle.jdbc.driver.OracleDriver");}
            catch(ClassNotFoundException ex) {throw new RuntimeException("Cannot locate Oracle Driver");}
        }
        public TestNullResultSet(String name) {super(name);}    private Connection conn = null;
        protected void setUp() throws Exception {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:spider","user","password");
            assertNotNull(conn);
        }
        protected void tearDown() throws Exception {
            if(null!=conn&&!conn.isClosed()) {conn.close();}
        }    public void testResultSetNull() throws Exception {
            String sql = "SELECT * FROM ARGUMENT_T WHERE ARGUMENT = ?";
            PreparedStatement prepStat = conn.prepareStatement(sql);
            prepStat.setString(1, "ABC");
            ResultSet rs = prepStat.executeQuery();
            boolean nullResultSet = false;
            if ( !rs.next() ) {nullResultSet = true;}
            rs.close();
            prepStat.close();
            assertTrue(nullResultSet);
        }
    }
    下面是junit的运行结果:
    .
    Time: 5.288OK (1 test)