Me ajudem...dúvida cruel!

7 respostas
N

Boa noite. Gente estou desenvolvendo um aplicativo e em determinado momento preciso fazer duas inserçoes, em duas tabelas diferentes. Gostria de saber porque não estou conseguindo realizar a operação.
segue abaixo o código:

out.println("<html><head><SCRIPT language='JavaScript'>");
		try{
		stm.executeUpdate("insert into funcionario(cpf, rg, nome, dt_nascimento, dt_admissao, email) values('" + request.getParameter("txtCpf") + "','" + request.getParameter("txtRg") + "','" + request.getParameter("txtNome") + "','" + request.getParameter("txtDtNasc") + "','" + request.getParameter("txtDtAdmissao") + "','" + request.getParameter("txtEmail") + "');");
				
		out.println("alert('O Funcionário "+ request.getParameter("txtNome")+" foi incluído no banco');");	
					  
		}
		catch(Exception e ){
				out.println("alert('Funcionário "+ request.getParameter("txtNome")+" não incluído');");
		}
		finally{
			try{
				ResultSet rs = stm.executeQuery("select max(idFunc) as cod_func from funcionario");
				stm.executeUpdate("insert into endereco(funcionario_idFunc, rua, numero, bairro, cidade, estado, cep, complemento) values('" + rs.getString("cod_func") + "', '" + request.getParameter("txtEnd") + "','" + request.getParameter("txtEndNum") + "','" + request.getParameter("txtEndBairro") + "','" + request.getParameter("txtEndCidade") + "','" + request.getParameter("txtEndEstado") + "','" + request.getParameter("txtCep") + "','" + request.getParameter("txtEndComp") + "');");
			}
			catch(Exception e ){
				out.println("alert('Não foi possível buscar o idFunc!');");
			}
			finally{
		out.println("</SCRIPT></head><body><a href='funcForm.jsp'>Voltar</a><nbody></html>");
                        }

Um detalhe é que estou tentando fazer o segundo "INSERT" com a chave primária da tabela funcionário, com a tabela endereço. Elas estão relacionadas e juntas formam um chave composta com as chavesprimárias das tabelas. Existe outro jeito mais fácil de fazer isso? Está certo o jeito que estou fazendo?
Desde já agradeço. Obrigado

7 Respostas

P

Cara, acho um pouco tenso fazer isso q vc está fazendo:

ResultSet rs = stm.executeQuery("select max(idFunc) as cod_func from funcionario");

imagina N usuários usando o sistema - a msm funcionalidade - simultaneamente?!?!

acho q isso pode trazer dor de cabeça para vc no futuro

furutani

Olá

Realmente fica dificil saber o que está errado.
Eu acho que no fim do insert não tem ; (ponto-e-virgula).

Coloque pelo menos um e.printStackeTrace() dentro do catch

catch(Exception e ){ e.printStackTrace(); out.println("alert('Funcionário "+ request.getParameter("txtNome")+" não incluído');");

fpavao

É um aplicativo de estudo ou comercial ?? pois caso seja comercial, acredito que o uso de um framework de persistencia como hibernate ou ibatis simplificaria muito as coisas…

[]'s

lgi2020

furutani:
Olá

Realmente fica dificil saber o que está errado.
Eu acho que no fim do insert não tem ; (ponto-e-virgula).

Coloque pelo menos um e.printStackeTrace() dentro do catch

catch(Exception e ){ e.printStackTrace(); out.println("alert('Funcionário "+ request.getParameter("txtNome")+" não incluído');");

Realmente, não tem insert no final da instruçãos SQL.
Tratar os erros e verificar a exceção gerada também vai ajudar muito!

Abraços.

sfing

Estou de acordo, utilizar padrões é a melhor forma de se evitar erros na aplicação framework e design patterns serial uma ótima solução, isso não caso de aplicação comerciais !!

N

pardal_nb:
Cara, acho um pouco tenso fazer isso q vc está fazendo:

ResultSet rs = stm.executeQuery("select max(idFunc) as cod_func from funcionario");

imagina N usuários usando o sistema - a msm funcionalidade - simultaneamente?!?!

acho q isso pode trazer dor de cabeça para vc no futuro

Concordo com você e pensei nisso também. Mas assim: este programa que estou desenvolvendo é para um trabalho da faculdade, onde no final ele será entregue a uma micro-empresa (entenda micro como “mini”). Daí seguinte. Somente uma pessoa irá utilizar. A dona do estabelecimento. Mas assim queria saber como eu faria então para realizar duas inserções no banco em tabelas distintas? Porque assim, eu consigo povoar as tabelas endereço e funcionário, porém não consigo relacionar o id de funcionário, com a sua chave estrangeira na tabela endereço. Como posso fazer isso? Desde já muito obrigado.

N

Um detalhe que queria dizer é que este software é comercial, mas tem como objeto o estudo acadêmico, ou seja é um projeto que estou desenvolvendo para uma empresa, porém é através da faculdade. Tipo um trabalho da facul mesmo. Qualquer ajuda, dica será muito bem vinda. Estou iniciando em JSP. Agradeço a colaboração de todos. Isso que faz as pessoas participarem mais dos fóruns. Obrigado.

Criado 29 de novembro de 2007
Ultima resposta 29 de nov. de 2007
Respostas 7
Participantes 6