Select retornando valor errado

Ola,

galera estou com um problema no select , segue o codigo :

[code] try {

		java.sql.ResultSet res = null;
		PreparedStatement select;

		select = connection.prepareStatement("select Valor_Consulta from Medico where ID_Medico = ?");
		select.setInt(1, IdMedico);

		res = select.executeQuery();

		if (res.next()) {

		String valorConsulta = res.getString("Valor_Consulta");

		}

	} catch (Exception e) {
		System.out.println("Erro valor consulta");
		e.printStackTrace();
	}
	System.out.println(valorConsulta);
	
          return valorConsulta;

} [/code]

O valor da consulta no banco de dados está declarado como nvarchar(13) = R$ 150,00

O problema é que o valorConsulta está retornando “1” ao invés de “R$ 150,00” , já tentei mudar no banco para varchar e char , mas mesmo assim continua retornando o valor “1” , alguém saberia me dizer como faço para retornar o valor respectivo ao banco de dados?

Esse seu código está estranho, teoricamente o escopo de sua variável seria apenas dentro do bloco IF, suponho que vc tenha outra variável na classe com o mesmo nome, tente fazer o seguinte para ver se vai imprimir o valor correto:

[code]if (res.next()) {

    String valorConsulta = res.getString("Valor_Consulta");  
    System.out.println(valorConsulta); 

}[/code]

[quote=dudu795]Esse seu código está estranho, teoricamente o escopo de sua variável seria apenas dentro do bloco IF, suponho que vc tenha outra variável na classe com o mesmo nome, tente fazer o seguinte para ver se vai imprimir o valor correto:

[code]if (res.next()) {

    String valorConsulta = res.getString("Valor_Consulta");  
    System.out.println(valorConsulta); 

}[/code] [/quote]

Oi, obrigado pela resposta , então na verdade eu coloquei " String valorConsulta " só para mostrar que meu atributo valorConsulta é uma string , mas ele está declarado no inicio do código e não dentro do if , fiz oq vc sugeriu e mesmo assim ele continua exibindo valor “1”

[quote=dudu795]Esse seu código está estranho, teoricamente o escopo de sua variável seria apenas dentro do bloco IF, suponho que vc tenha outra variável na classe com o mesmo nome, tente fazer o seguinte para ver se vai imprimir o valor correto:

[code]if (res.next()) {

    String valorConsulta = res.getString("Valor_Consulta");  
    System.out.println(valorConsulta); 

}[/code] [/quote]
Muito estranho.

1 - Onde está a definição do parâmetro esperado pelo PreparedStatement?
2 - Nunca use

if(rs.next())

Pois o ResultSet é meio “burrinho”, afinal, quando você invoca o método next, ele já passa para o próximo elemento, o mais adequado é utilizar

while(rs.next())

Então você pode utilizar todos os elementos que estão no resultSet.

[quote=drsmachado][quote=dudu795]Esse seu código está estranho, teoricamente o escopo de sua variável seria apenas dentro do bloco IF, suponho que vc tenha outra variável na classe com o mesmo nome, tente fazer o seguinte para ver se vai imprimir o valor correto:

[code]if (res.next()) {

    String valorConsulta = res.getString("Valor_Consulta");  
    System.out.println(valorConsulta); 

}[/code] [/quote]
Muito estranho.

1 - Onde está a definição do parâmetro esperado pelo PreparedStatement?
2 - Nunca use

if(rs.next())

Pois o ResultSet é meio “burrinho”, afinal, quando você invoca o método next, ele já passa para o próximo elemento, o mais adequado é utilizar

while(rs.next())

Então você pode utilizar todos os elementos que estão no resultSet.[/quote]

Então , ele estava como while(rs.next()) , eu mudei para If somente pra teste , mas sem sucesso =/

Por que não posta o código correto?

[code]

public class Servicos {

String valorConsulta ;


  public String valorConsulta(String Id) {

	IdMedico = Integer.parseInt(Id);
	
	try {

		java.sql.ResultSet res = null;
		PreparedStatement select;

		select = connection.prepareStatement("select Valor_Consulta from Medico where ID_Medico = ?");
		select.setInt(1, IdMedico);

		res = select.executeQuery();

		while (res.next()) {

			valorConsulta = res.getString("Valor_Consulta");
			
                                       }

	} catch (Exception e) {
		System.out.println("Erro valor consulta");
		e.printStackTrace();
	}
	System.out.println(valorConsulta);
	return valorConsulta;

}

}[/code]

Boa Tarde amigo,

Acredito que o erro esta na função

String valorConsulta = res.getString("Valor_Consulta"); 

altere para:

String valorConsulta = res.getString("NOME_COLUNA");
float n = rs.getFloat("COLUNA_PRECO");

[quote=DiiH]Boa Tarde amigo,

Acredito que o erro esta na função

String valorConsulta = res.getString("Valor_Consulta"); 

altere para:

String valorConsulta = res.getString("NOME_COLUNA");
float n = rs.getFloat("COLUNA_PRECO");
 [/quote]

Boa Tarde , obrigado pela resposta , fiz a alteração como vc sugeriu , mas continua exibindo “1” =(

Galera resolvi aqui , dei um refresh no DataBase e um clean no TomCat , misteriosamente exibiu o valor correto =) .

Obrigado pela ajuda !