-
Gente eu to capturando um erro no meu try catch na hora que eu faço a inserção no banco . Sendo que tenhos duas tabelas que tem akele lance de chave primaria sendo que tem campos que tem nas duas tabelas(chave estrangeira) .
-
Ele faz a inserção na primeira tabela so ke na segunda da erro … :sad:
-
O erro que aparece é este -------> “Índice de coluna inválido”
-
Alguem pode me indicar onde pode estar ocorrendo este erro !?
-
Que ja dei uma olhada em tudo !!!
Poste o código onde vc obtem o erro pra gente ver…
este é o meu dao
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import br.gov.am.tce.sap.dao.filtro.FiltroHistoricoCargo;
import br.gov.am.tce.sap.dao.interfaces.InterfaceDAOHistoricoCargo;
import br.gov.am.tce.sap.vo.VOHistoricoCargo;
/*
* Classe DAOHistoricoCargo que implementa a interface
* InterfaceDAOHistoricoCargo
*/
public class DAOHistoricoCargo implements InterfaceDAOHistoricoCargo {
// Instancia nula da classe DAOHistoricoCargo
private static DAOHistoricoCargo singleton = null;
/*
* Construtor vazio
*/
private DAOHistoricoCargo() {
}
/*
* Metodo que retorna uma instancia da classe DAOHistoricoCargo, garantindo
* que a mesma so tera uma instancia criada
*/
public static DAOHistoricoCargo getInstancia() {
if (singleton == null) {
singleton = new DAOHistoricoCargo();
}
return singleton;
}
/*
* Metodo responsavel pela inclusao de dados na tabela HISTORICO_CARGO.
* Recebe como parametro um objeto da classe VOHistoricoCargo que contem os
* dados referentes aos campos que serao inseridos na tabela.
*/
public void incluir(VOHistoricoCargo pVOHistoricoCargo) throws SQLException {
PreparedStatement prepStatement = null;
String sql = "INSERT INTO TBL_HISTORICO_CARGO (COD_CARGO , DAT_INCLUSAO , DAT_PUBLICACAO_LEI , DAT_VIGENCIA , DES_LOGIN , NUM_ANO_COMPETENCIA , NUM_LEI_AUTORIZATIVA , NUM_MES_COMPETENCIA , NUM_TIPO_ATUALIZACAO , NUM_UG , QTD_VAGAS_FIXADAS_LEI ) VALUES (?,SYSDATE,SYSDATE,SYSDATE,?,?,?,?,?,?,?)";
try {
// Estabelecimento da conexao com o banco de dados
Connection conexao = ControladorConexao.abrirConexao();
// Parametrizacao do comando sql
prepStatement = conexao.prepareStatement(sql);
prepStatement.setString(1, pVOHistoricoCargo.getCod_cargo());
prepStatement.setDate(2, pVOHistoricoCargo.getDat_inclusao());
prepStatement.setDate(3, pVOHistoricoCargo.getDat_publicacao_lei());
prepStatement.setDate(4, pVOHistoricoCargo.getDat_vigencia());
prepStatement.setString(5, pVOHistoricoCargo.getDes_login());
prepStatement.setInt(6, pVOHistoricoCargo.getNum_ano_competencia());
prepStatement.setString(7, pVOHistoricoCargo.getNum_lei_autorizativa());
prepStatement.setInt(8, pVOHistoricoCargo.getNum_mes_competencia());
prepStatement.setInt(9, pVOHistoricoCargo.getNum_tipo_atualizacao());
prepStatement.setInt(10, pVOHistoricoCargo.getNum_ug());
prepStatement.setInt(11, pVOHistoricoCargo.getQtd_vagas_fixadas_lei());
prepStatement.executeUpdate();
prepStatement.close();
conexao.close();
System.out.println("Historico do Cargo Incluido com Sucesso!!!");
} catch (SQLException e) {
throw new SQLException(e.getMessage());
}
}
}
Acao onde eu isiros os valor pra mandar pro banco !
public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {
VOCargo voCargo = null;
VOHistoricoCargo voHistoricoCargo = null;
FormularioInclusaoCargo fExibirInclusaoCargo = (FormularioInclusaoCargo) form;
System.out.println("Acao de Exibir Inclusao de Cargos...");
try {
voHistoricoCargo = new VOHistoricoCargo();
voHistoricoCargo.setCod_cargo(fExibirInclusaoCargo.getCod_cargo());
voHistoricoCargo.setDat_inclusao(Fachada.getInstancia().getStringToData("01-05-1984")); voHistoricoCargo.setDat_publicacao_lei(Fachada.getInstancia().getStringToData(fExibirInclusaoCargo.getDat_publicacao_lei())); voHistoricoCargo.setDat_vigencia(Fachada.getInstancia().getStringToData(fExibirInclusaoCargo.getDat_vigencia()));
voHistoricoCargo.setDes_login(fExibirInclusaoCargo.getDes_login());
voHistoricoCargo.setNum_ano_competencia(2006);
voHistoricoCargo.setNum_lei_autorizativa(fExibirInclusaoCargo.getNum_lei_autorizativa());
voHistoricoCargo.setNum_mes_competencia(12);
voHistoricoCargo.setNum_tipo_atualizacao(1);
voHistoricoCargo.setNum_ug(809);
voHistoricoCargo.setQtd_vagas_fixadas_lei(Integer.parseInt(fExibirInclusaoCargo.getQtd_vagas_fixadas_lei()));
Fachada.getInstancia().incluirCargo(voCargo, voHistoricoCargo);
request.setAttribute("msg","Cargo incluído com sucesso na base de dados!");
} catch (SQLException e) {
if (e.getErrorCode() == 1) {
System.out.println("Registro Duplicado!!!");
request.setAttribute("erro","Cargo já cadastro na base de dados!");
return mapping.findForward("Erro");
}
if (e.getErrorCode() == 0) {
System.out.println(e.getMessage());
System.out.println(e.getLocalizedMessage());
System.out.println(e.getStackTrace());
e.printStackTrace();
/*
* Mensagem exibida na pagina jsp que e mostrada ao usuario caso
* o cargo nao tenha sido atualizado corretamente
*/
request.setAttribute("erroConexaoServidorBD","Falha na conexao com o servidor!");
/*
* Mapeamento da pagina jsp que sera exibida caso aconteca algum
* erro na atualizacao
*/
return mapping.findForward("ErroConexaoServidorBD");
} else
{
request.setAttribute("erroServidorBD", "Falha na execução da operação. Tente novamente!");
return mapping.findForward("ErroServidorBD");
}
}
Aí é quando exibe o erro de indice invalido !
Opa,
ainda não deu para identificar onde está o problema: passa o código deste método:
:okok:
-
Eu consegui verificar no debug qual seria o possivel problema .
-
O problema esta no dao do historico , sendo que ele nao ta conseguindo inserir o campo data no formato que ta no banco .
-
Creio eu que seja isso pois kuando chega na parte de inserir a data ele o debug passa direto e finaliza o processo !!!
-
Se tem algum exemplo de como incluir no banco um campo do tipo date no oracle ?
Opa,
tipo se você usar o os métodos setDate do PreparedStatement não terá diferenças ao usar quando você mudar de banco.
:okok: