Boa noite! duvida de o por que esta acontecendo isso?

7 respostas
TASF

boa noite galera do guj!!! seguinte estou com uma aplicaçao que esta inserindo no BD porem no console do eclipse ele me dis q nao foi inserido , mas qndo faço o select no banco la esta os dados …

package materialDAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Collections;

import materialMODELO.MatModelo;

public class MatDao  extends ConexaoDAO{
MatModelo modelo = new MatModelo();
	
public int inserir_materialtiagoalves(MatModelo modelo){
	Connection 			conexao = null;
	PreparedStatement	ps 		= null;
	
	boolean				executou = false;
	int					retorno	 = 0; 				
	
	try {
		conexao = obterConexao();
		
		
		ps = conexao.prepareStatement("insert into ltp.materialtiagoalves values(?,?,?,?,?,?,?,?)");
		ps.setInt(1, modelo.getCdMat()); // estes são os parâmetros para inserção
		ps.setString(2, modelo.getNome());// estes são os parâmetros para inserção
		ps.setInt(3, modelo.getValor());// estes são os parâmetros para inserção
		ps.setInt(4,modelo.getTamanho());// estes são os parâmetros para inserção
		ps.setString(5,modelo.getCor());// estes são os parâmetros para inserção
		ps.setInt(6,modelo.getVlMercado());// estes são os parâmetros para inserção
		ps.setInt(7,modelo.getVllimite());// estes são os parâmetros para inserção
		ps.setInt(8,modelo.getVlbase());// estes são os parâmetros para inserção
		
		executou  = ps.execute();
		
		if(executou){// OU SEJA ELE NAO ESTA ENTRANDO AKI PQ??
			retorno = 1; // se retornar 1 é por que o insert foi realizado com erro
//PQ SE ESTIVESSSE  NO CONSELE ESTARIA APARECENDO DADOS INSERIDOS COM SUCESSO   

		}else{

// TA ENTRANDO AKI POIS A MSG Q  APARECE É DADOS NAO INSERIDOS 
			retorno = 0; // se retornar 1 é por que o insert foi realizado com sucesso
		
//SO Q NO BANCO OS DADOS SAO INSERIDOS 
}
		
	} catch (Exception e) {
		e.printStackTrace();
	}finally{
		
		try {
			ps.close();
			conexao.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	return retorno;
} 

	

	public MatModelo consultar_materialtiagoalves(int cdMat){
		
		return modelo;//retorna um objeto q ainda nao foi criado
	}

	public int remover_materialtiagoalves(MatModelo modelo){
		
		return 1;
	}
	public int alterar_materialtiagoalves(MatModelo modelo){
		
		return 1;
	}
	public Collections listar_materialtiagoalves(MatModelo modelo){
		
		return null;
	}

}

JAVA E MTO LOKO HAHAHAH

grato pela ajuda d vcs …

7 Respostas

ViniGodoy

Não é o Java que é "LOKO", é você que não lê a documentação.
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html#execute()

Observe o que ele diz sobre o valor de retorno do método execute:

"Documentação que você deveria ter lido":

Returns:

true if the first result is a ResultSet object; false if the first result is an update count or there is no result

Ou seja, esse método retorna verdadeiro se sua consulta for um SELECT e, portanto, no resultado tiver um resultset. Ou falso, se sua consulta for de atualização (INSERT, UPDATE ou DELETE) e o resultado for somente um contador.
O resultado não tem absolutamente nada a ver com ter ou não "dado certo" ou "executado". Se você mandou executar, ele vai executar.

Talvez para você seja mais útil o método executeUpdate().
Esse sim, te retorna quantas linhas foram inseridas no banco de dados. Assim você definir sua variável executou como:

executou = ps.executeUpdate() >= 1;

Vale lembrar também que erros não serão reportados pelos valores de retorno, e sim, por exceções.
Por isso, é importante que você faça um tratamento adequado delas.

airmigjr

Olá,
não estou podendo fazer testes agora, mas você já confirmou qual o retorno de

ps.execute() ?

Bom trabalho.

(Desculpe, não havia visto a resposta do Vini)

W

Gostei dessa sequencia de comentarios!

ps = conexao.prepareStatement("insert into ltp.materialtiagoalves values(?,?,?,?,?,?,?,?)");  
        ps.setInt(1, modelo.getCdMat()); // estes são os parâmetros para inserção  
        ps.setString(2, modelo.getNome());// estes são os parâmetros para inserção  
        ps.setInt(3, modelo.getValor());// estes são os parâmetros para inserção  
        ps.setInt(4,modelo.getTamanho());// estes são os parâmetros para inserção  
        ps.setString(5,modelo.getCor());// estes são os parâmetros para inserção  
        ps.setInt(6,modelo.getVlMercado());// estes são os parâmetros para inserção  
        ps.setInt(7,modelo.getVllimite());// estes são os parâmetros para inserção  
        ps.setInt(8,modelo.getVlbase());// estes são os parâmetros para inserção

//Daniel

M

como eu gosto do hibernate hahaha

Lucas_Abbatepaolo

É impressionante como existem pessoas que criticam a linguagem sendo que o problema esta na velha e conhecida pecinha…o programador…

M

carra sei não se esse if seu ta certo.... tenta coloca

if (executou == true){

}
Lucas_Abbatepaolo

No if é possivel avaliar o valor de uma variavel desde que ela seja um booleano…

Criado 16 de novembro de 2011
Ultima resposta 17 de nov. de 2011
Respostas 7
Participantes 6