Criar um INSERT no JDBC utilizando PROCEDURES

7 respostas
arthurgon

Olá gente;

Preciso inserir dados em uma PROCEDURE no MySql. Nunca trabalhei com PROCEDURES…nem tenho idéia.
Gostaria de saber se alguem pode me ajudar. Só preciso dos métodos INSERT e LIST.
Como crio em JDBC?
Segue meu BEAN:

///CHAVES PRIMARIAS//// private int codigoMarcacao= 0; private int empresa = 0; private int matricula = 0; ///DEMAIS ATRIBUTOS//// private String statusTipoMarcacao = null; private int marcacaoViaCracha= 0; private Date dataMarcacao=null; private Date horaMarcacao= null; private int empresaRelogio = 0; private int filialRelogio =0; private int codigoMarcRelogio = 0; private String statusMarcacao= null; private int codTipoMarcacao = 0; private String statusTransmissao = null; private String modoAutentica= null; private String marcacaoEnv = null; private String marcacaoErr = null;

Valeu gente.

7 Respostas

T

Você quer saber como é que se chama uma Stored Procedure do MySQL, não?

Por favor, apresentem-se aqui os especialistas em MySQL. Ou então você mesmo pode olhar a documentação:

arthurgon

A PROCEDURE já existe…meu problema tá no JDBC. Quero inserir dados nessa PROCEDURE…

T

Os dados que você quer inserir são os parâmetros da procedure?

arthurgon

Isso mesmo…

ramilani12

Utilize a classe CallableStatement para isso, http://java.sun.com/j2se/1.4.2/docs/api/java/sql/CallableStatement.html

Mais: http://www.herongyang.com/jdbc/MySQL-CallableStatement-Overview.html

Pesquisar no Google faz diferença;;;

arthurgon

Fiz do jeito que alguns exemplos do Google me mostraram...mas não tá rolando...
Ele não encontra a Procedure.
Eu tenho que passar o nome dela no "MAIN"?

Ficou assim:

import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import com.mysql.jdbc.CallableStatement;



/**
 * @author  Arthur.Gomes
 */

public class MarcacaoDAO extends DAOBase{

	///Atributos estáticos dos Métodos principais//////		
	private static String INSERT = null;

	
	public MarcacaoDAO() {
		this(null);
	}
	
	public MarcacaoDAO(Connection connection) {
		super(connection);
		///Inserindo Dados nos Campos da Tabela//////
		StringBuffer stringBuffer = new StringBuffer();
		
		if(INSERT == null){
			stringBuffer.delete(0, stringBuffer.length());
			stringBuffer.append(" {call sp_MCC_RPT(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}");
			INSERT = stringBuffer.toString();
		}		
		
		
	}
	////////MÉTODO UTILIZADO PARA INSERIR REGISTROS//////////////
	public boolean inserir(MarcacaoVO marcacaoVO) throws SQLException{
		CallableStatement callableStatement = null;
        Connection con = null;
      
		try{
			con = super.getConnection();
			
			callableStatement = (CallableStatement) con.prepareCall(INSERT);
			int index = 1;
			///Campos que serão preenchidos///
			callableStatement.setInt(index++, marcacaoVO.getCodigoMarcacao());
			callableStatement.setInt(index++, marcacaoVO.getEmpresa());
			callableStatement.setInt(index++, marcacaoVO.getMatricula());
			callableStatement.setString(index++,marcacaoVO.getStatusMarcacao());
			callableStatement.setInt(index++,marcacaoVO.getMarcacaoViaCracha());
			callableStatement.setDate(index++,utilDateTOsqlDate(marcacaoVO.getDataMarcacao()));
			callableStatement.setTime(index++, utilDateTOsqlTime(marcacaoVO.getHoraMarcacao()));
			callableStatement.setInt(index++, marcacaoVO.getEmpresaRelogio());
			callableStatement.setInt(index++,marcacaoVO.getFilialRelogio());
			callableStatement.setInt(index++,marcacaoVO.getCodigoMarcRelogio());
			callableStatement.setString(index++,marcacaoVO.getStatusMarcacao());
			callableStatement.setInt(index++,marcacaoVO.getCodTipoMarcacao());
			callableStatement.setString(index++,marcacaoVO.getStatusTransmissao());
			callableStatement.setString(index++,marcacaoVO.getMarcacaoEnv());
			callableStatement.setString(index++,marcacaoVO.getMarcacaoErr());
			callableStatement.setString(index++,marcacaoVO.getModoAutentica());
			
				
			int retorno = callableStatement.executeUpdate();
			
			callableStatement.getResultSet();
			
			if(retorno > 0){
				return true;
			}else{
				return false;
			}
		} finally {
			close(null, callableStatement, con);
		}
	}

E o MAIN ficou dessa forma:

public static void main(String[] args) {
		
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
		SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy");
		MarcacaoVO vo = new MarcacaoVO();
		
		vo.setCodigoMarcacao(3);
		vo.setEmpresa(7);
		vo.setMatricula(2);
	
		vo.setStatusMarcacao("W");
		vo.setMarcacaoViaCracha(7);
		try {
			
		vo.setDataMarcacao(sdf2.parse("07-07-2008"));
		vo.setHoraMarcacao(sdf.parse("07:30:00"));
	
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		vo.setEmpresaRelogio(7);
		vo.setFilialRelogio(7);
		vo.setCodigoMarcRelogio(1);
		vo.setStatusTipoMarcacao("w");
		
		vo.setCodTipoMarcacao(1);
		vo.setMarcacaoEnv("W");
		vo.setMarcacaoErr("W");
		vo.setStatusTransmissao("W");
		vo.setModoAutentica("W");
	
		
		MarcacaoDAO dao = new MarcacaoDAO();
		
		try {
			dao.inserir(vo);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("Gravado com sucesso!!");
	}

	
	
}

Enfim...o erro é de não localizar a Procedure...

Valeu gente.

arthurgon

Deu certo…mas para caráter de futura pesquisa de outro membro…meu erro foi importar um pacote errado.
Estava usando o MySQL no “import” quando no nosso caso deveria usar apenas o SQL genérico.

Valeu galera…

Criado 5 de junho de 2008
Ultima resposta 5 de jun. de 2008
Respostas 7
Participantes 4