naofuieu 0 Denunciar post Postado Junho 21, 2008 Galera, eu tô em desespero!!! Como eu faço pra saber se uma coluna do resultset tem valor nulo? Eu já vi que tem o método wasNull(), mas pelo que eu entendi, ele verifica se toda uma linha do resultset era nula (???). Não é isso o que eu quero (Eu nem sei usar!) Eu só quero saber se o valor de um campo é nulo. Alguém poderia me ajudar? :wacko: Valeu Compartilhar este post Link para o post Compartilhar em outros sites
naofuieu 0 Denunciar post Postado Junho 21, 2008 Detalhe: Acho que achei, mas não tenho certeza: ResultSet rs = statement.executeQuery("SELECT * FROM log"); while(rs.next()) { int valor = rs.getInt("valor"); if(rs.wasNull()) valor = 0; } Se funcionar (quando eu testar) eu digo. Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Junho 22, 2008 Boa tarde naofuieu Aproveitando a sua dica, o ResultSet possui métodos que capturam o valor de cada campo, basta utilizar o tipo de método adequado ao tipo de campo, ex: se for Int, então utilize getInt, se for String então utilize qetString, se for date então utilize o getDate. Supondo que o campo que voce queira verificar se o mesmo é nulo seja do tipo String, então é só aplicar o código assim: ResultSet rs = statement.executeQuery("SELECT * FROM Tabela"); while(rs.next()) { if (rs.getString("nomedocampo")==null) { ........ ........ ........ } } A instrução acima vai navegar nos registros de toda a tabela e verificar se o campo nomedocampo é nullo. Um abraço Compartilhar este post Link para o post Compartilhar em outros sites
naofuieu 0 Denunciar post Postado Junho 22, 2008 Boa tarde naofuieu Aproveitando a sua dica, o ResultSet possui métodos que capturam o valor de cada campo, basta utilizar o tipo de método adequado ao tipo de campo, ex: se for Int, então utilize getInt, se for String então utilize qetString, se for date então utilize o getDate. Supondo que o campo que voce queira verificar se o mesmo é nulo seja do tipo String, então é só aplicar o código assim: ResultSet rs = statement.executeQuery("SELECT * FROM Tabela"); while(rs.next()) { if (rs.getString("nomedocampo")==null) { ........ ........ ........ } } A instrução acima vai navegar nos registros de toda a tabela e verificar se o campo nomedocampo é nullo. Um abraço Obrigado, Discorpio. Essa parte eu até sabia, mas o problema do qual eu estava apanhando era no caso de inteiros ou floats. Se, nestes campos, o valor fosse NULL, talvez o java retornasse 0, o que também é um valor possível da minha coluna... E o negócio do wasNull eu tinha entendido completamente errado. Também, o carinha que estava explicando lá onde eu achei deu a entender que esse método verificava se toda uma linha do ResulSet era nula. Aí eu boiei, hehe http://forum.imasters.com.br/public/style_emoticons/default/blush.gif ! Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Junho 22, 2008 Boa noite Naofuieu. Os campos que contenham valores nulos, sempre serão nulos, ainda que sejam Float ou inteiros, o Java não trata isso automaticamente em colocar valores zerados em caso de campos nulos. Isso tem que ser tratado pelo Desenvolvedor, e pode ser tratado assim: Statement st = minhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.UPDATABLE); ResultSet rs = st.executeQuery("SELECT * FROM Tabela"); ResultSetMetaData rsmd = rs.getMetaData(); rs.last() Integer[rs.getRow()] campoInteiro; float[rs.getRow()] campoFloat; Double[rs.getRow()] campoDouble; rs.beforeFirst(); while(rs.next()) { try { for (int I = 1; I <= rsmd.getColumnCount(); ++I) { switch (rsmd.getColumnType(I)) { case Types.INTEGER: campoInteiro[I] = rs.getInt(I); break; case Types.FLOAT: campoFloat[I] = rs.getFloat(I); break; case Types.DOUBLE: campoDouble[I]= rs.getDouble(I); break; } } if (campoInteiro[I]==null) campoInteiro[I] = 0; if (campoFloat[I]==null) campoFloat[I]= 0.0; if (campoDouble[I]==null) campoDouble[I] = 0.0; } catch(SQLException erro) { erro.printStackTrace(); } } Um abraço. Compartilhar este post Link para o post Compartilhar em outros sites