Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

naofuieu

O que acontece se uma coluna do DB tem valor nulo?

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.