Problema no consulta ao MySQL

6 respostas
Herm_io

Oi pessoal…
É o seguinte, estou desenvolvendo um aplicativo em Java que faz a conexão com o banco de dados MySQL 5.0.
A conexão é feita normalmente e ele retorna os resultados esperados. Mas na minha classe existem os métodos getProduto e getPreco. O getProduto como deve retornar uma String do banco de dados, roda sem problemas. Mas a getPreco, que deverá retornar um número inteiro (no banco de dados, só inseri números inteiros) não funciona e retorna esse erro:

Exception in thread “main” java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

at teste_banco.Acesso_Banco.getPreco(Acesso_Banco.java:101)

at teste_banco.Aplicativo.main(Aplicativo.java:15)

abaixo segue o método da classe:

static final String JDBC_DRIVER = “com.mysql.jdbc.Driver”;
static final String DATABASE_URL = “jdbc:mysql://localhost/produtos”;

Connection connection = null; // gerencia a conexão
Statement statement = null; // instrução de consulta
String consulta = null;
public int getPreco( String cons ){

String ResultadoConsulta = null;

int Preco = 0;

String SQL = "SELECT preco FROM mercadorias WHERE codigo = ";

consulta = SQL + cons;

try{

Class.forName( JDBC_DRIVER ); // carrega a classe de driver do banco de dados
	// estabelece conexão com o banco de dados
	connection = DriverManager.getConnection(DATABASE_URL, "user", "senha");
	// cria Statement para consultar banco de dados
	statement = connection.createStatement();
	// consulta o banco de dados
	ResultSet resultSet = statement.executeQuery(consulta.toString());
	// processa resultados da consulta
	ResultSetMetaData metaData = resultSet.getMetaData();
	int numberOfColumns = metaData.getColumnCount();
	
	
	while (resultSet.next())
	{
		for (int i = 1; i <= numberOfColumns; i++){
			ResultadoConsulta = (String) resultSet.getObject(i);
			Preco = Integer.parseInt(ResultadoConsulta);
		}
		
			 
		
		//System.out.println();
		
		
			
	}// fim do while
}// fim do try

catch (SQLException sqlException)

{

sqlException.printStackTrace();

System.exit(1);

}

catch (ClassNotFoundException classNotFound)

{

classNotFound.printStackTrace();

System.exit(1);

}// fim do catch

finally

{

try

{

statement.close();

connection.close();

}// fim do try

catch (Exception exception)

{

exception.printStackTrace();

System.exit(1);

}

}

return Preco;

}

Obrigado a todos

6 Respostas

alucardeck

o erro parece facil corrigir…
mas esta ruim de ler…

coloque o codigo nas TAGs [code ] [/code ]
se não fica complicado

Ex.:

EDIT:

ah responderam logo abaixo =)

T

Provavelmente ele já lhe retorna um objeto Integer, não String. Nesse caso, você teria de fazer algo como:

ResultadoConsulta = (Number) resultSet.getObject(i);
Preco = ResultadoConsulta.intValue();
malves_info

Tente:

switch (metaData.getColumnType(i)) {
			case Types.INTEGER: 
					Preco = rs.getInt(resultSet.getColumnName(i));
					break;
			case Types.VARCHAR:
					algumaString = rs.getString(resultSet.getColumnName(i));
					break;
}

E troque “Preco” por “preco” e “ResultadoConsulta” por “resultadoConsulta” isso é padrão de codificação.

[]'s

Herm_io

Olá... tentei fazer da maneira que foi sugerida, mas o erro ainda persiste.
Abaixo vou inserir o código da classe getProduto e da classe getPreco.

getProduto

public String getProduto ( String cons ){
		String ResultadoConsulta = null;
		String SQL = &quot;SELECT nome FROM mercadorias WHERE codigo = &quot;;
		consulta = SQL + cons;
		
try{
			
			Class.forName( JDBC_DRIVER ); // carrega a classe de driver do banco de dados
			// estabelece conexão com o banco de dados
			connection = DriverManager.getConnection(DATABASE_URL, &quot;user&quot;, &quot;senha&quot;);
			// cria Statement para consultar banco de dados
			statement = connection.createStatement();
			// consulta o banco de dados
			ResultSet resultSet = statement.executeQuery(consulta.toString());
			// processa resultados da consulta
			ResultSetMetaData metaData = resultSet.getMetaData();
			int numberOfColumns = metaData.getColumnCount();
			
			
			while (resultSet.next())
			{
				for (int i = 1; i &lt;= numberOfColumns; i++)
					ResultadoConsulta = (String) resultSet.getObject(i);
				//System.out.println();
				
				
					
			}// fim do while
	}// fim do try
		catch (SQLException sqlException)
		{
			sqlException.printStackTrace();
			System.exit(1);
		}
		catch (ClassNotFoundException classNotFound)
		{
			classNotFound.printStackTrace();
			System.exit(1);
		}// fim do catch
		finally
		{ 
			try
			{
				statement.close();
				connection.close();
			}// fim do try
			catch (Exception exception)
			{
				exception.printStackTrace();
				System.exit(1);
			}
		}
		return ResultadoConsulta;
	}

getPreco

public double getPreco( String cons ){
	String ResultadoConsulta = null;
	int Preco = 0;
	String SQL = &quot;SELECT preco FROM mercadorias WHERE codigo = &quot;;
	consulta = SQL + cons;
	
try{
		
		Class.forName( JDBC_DRIVER ); // carrega a classe de driver do banco de dados
		// estabelece conexão com o banco de dados
		connection = DriverManager.getConnection(DATABASE_URL, &quot;user&quot;, &quot;senha&quot;);
		// cria Statement para consultar banco de dados
		statement = connection.createStatement();
		// consulta o banco de dados
		ResultSet resultSet = statement.executeQuery(consulta.toString());
		// processa resultados da consulta
		ResultSetMetaData metaData = resultSet.getMetaData();
		int numberOfColumns = metaData.getColumnCount();
		
		
		while (resultSet.next())
		{
			for (int i = 1; i &lt;= numberOfColumns; i++){
                                    ResultadoConsulta = (String) resultSet.getObject(i);
                                    Preco = Integer.ParseInt(ResultadoConsulta);
				    
			}
			
				 
			
			//System.out.println();
			
			
				
		}// fim do while
}// fim do try
	catch (SQLException sqlException)
	{
		sqlException.printStackTrace();
		System.exit(1);
	}
	catch (ClassNotFoundException classNotFound)
	{
		classNotFound.printStackTrace();
		System.exit(1);
	}// fim do catch
	finally
	{ 
		try
		{
			statement.close();
			connection.close();
		}// fim do try
		catch (Exception exception)
		{
			exception.printStackTrace();
			System.exit(1);
		}
	}
	return Preco;
}
malves_info

Herm?io tentou fazer como mostrei acima??? De uma estudada mais sobre JDBC

Herm_io

Olá… consegui resolver.
Obrigado pela ajuda. :lol:

Criado 12 de agosto de 2008
Ultima resposta 13 de ago. de 2008
Respostas 6
Participantes 4