[RESOLVIDO] ResultSet.next() não aceita vazio

5 respostas
nebster

Olá caros colegas…

estou com problema porque faço uma consulta de produto no qual tem que retornar os códigos de grupo, subgrupo e marca relacionados ao produto.
porem não é obrigatório o preenchimento desse campo.
assim toda vez que executo a consulta em JDBC no banco ele retorna erro pelo campo em questão estar vazio.
a pergunta é:

alguém poderia dizer como faço para a consulta retornar o valor mesmo que vazio?

PS: como sei que ninguem ajuda ninguem sem ver codigo… aqui está o codigo em questão…

rs = Query2(sql);
			try {
				while(rs.next()){
					for (int j = 0; j < campos.size(); j++) {
						if(!rs.getString(campos.elementAt(j)).toString().isEmpty()){
							if(rs.getObject(campos.elementAt(j)).getClass() == java.sql.Date.class){
								lista.add(j, rs.getDate(campos.elementAt(j)));
							}else if(rs.getObject(campos.elementAt(j)).getClass() == Integer.class){
								lista.add(j, rs.getInt(campos.elementAt(j)));
							}else{
								lista.add(j, rs.getString(campos.elementAt(j)));
							}
						}else{
							lista.add(j,null);
						}
						/*if(rs.getType(j) == "Date"){
							
						}else{
						lista.add(j, rs.getString(campos.elementAt(j)).toString());
						}*/
					}
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		close();
		return lista;
	}

5 Respostas

Hebert_Coelho

Na sua consulta no DB você pode fazer um CASE. Se o valor estiver vazio você envia um valor default.

nebster

poderia me dar 1 ajuda visual de como ficaria com o CASE?

pra dizer a verdade não entendi direito como fazer…

maior_abandonado

nebster:
poderia me dar 1 ajuda visual de como ficaria com o CASE?

pra dizer a verdade não entendi direito como fazer…

o case em questão é referente ao código SQL, não java… a sintaxe dele é padrão sql92, então acredito que seja a mesma em qualquer banco… exemplos em 3 bancos:

http://dba-oracle.com/t_case_sql_clause.htm
http://msdn.microsoft.com/pt-br/library/ms181765.aspx
http://dev.mysql.com/doc/refman/4.1/pt/control-flow-functions.html

no oracle por exemplo você também poderia usar um NVL ou um decode…

brunorota

com uma simples comparação se o valor é nulo antes de usar esses dados recuperados do banco vc consegue fazer isso

nebster

vlw…
era tudo q precisava saber.
:slight_smile:

Criado 29 de março de 2012
Ultima resposta 29 de mar. de 2012
Respostas 5
Participantes 4