2016-09-18 6 views

ответ

5

Вы можете позвонить wasNull после вызова getBoolean. Это объясняется здесь: https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#wasNull%28%29

+0

Так что я должен был бы использовать: 'Boolean Foo = result.getBoolean ("бар"); if (result.wasNull()) foo = null; '? – Priv

+0

Да, вы можете использовать его так. – uoyilmaz

+0

Спасибо, отличная помощь – leole

3

Это должно работать:

try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?serverTimezone=UTC");){ 

     // create table bool_table (bool_value boolean); 
     // insert into bool_table values (null); 
     String sql = "SELECT * FROM bool_table"; 

     try (PreparedStatement preStmt = conn.prepareStatement(sql)){ 

      try (ResultSet rs = preStmt.executeQuery()) { 
       rs.next(); 

       System.out.println(rs.getObject(1, Boolean.class)); 
      } 

     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } catch (SQLException ex) { 
     ex.printStackTrace(); 
    } 
+0

Он бросает java.lang.AbstractMethodError –

+0

@NadavB, это не должно быть так, по крайней мере для MySQL. Я добавил полный пример. –

+0

это случилось со мной после postgresql. Второй ответ с wasNull работал для меня отлично. Может быть, ваш ответ будет только для mySQL? –