Adicionar Dados em sessão após Insert - JSP

6 respostas
A

Olá novamente!

Bom, estou com o seguinte problema. Eu quero, logo após realizar o insert de alguns dados, jogar esses mesmo dados em sessão, mas não no sentido de comando. Eu sei usar o session.setAttribute, tal e tal. A questão é como os dados estão sendo adicionados. No banco de dados, a tabela tem a PK como identidade - ou seja, eu não especifico. Assim sendo, eu insiro apenas os outros dados, como as FKs e afins. Mas, é claro, não tem como eu jogar só esses dados na sessão, porque eu vou precisar da ID também. Alguém tem alguma sugestão de como eu posso adicionar uma linha em uma coluna e logo em seguida recuperá-la?

No momento, estou usando um método muito gambiarra, que, claro, não funcionaria para um sistema com muito uso simultâneo. Possuo uma coluna na tabela em questão chamada “LAST_ADDED”, que, logo antes do insert, recebe um update para todas as linhas setando como 0. O último valor inserido recebe 1 (ou seja, o único). Logo após o insert, eu faço uma busca where LAST_ADDED = 1. Como eu disse, foi uma solução rápida e temporária, funciona mais ou menos, mas jamais funcionaria em um sistema maior, e já estou começando a ter problemas com isso. Portanto, preciso achar alguma coisa melhor.

Agradeço antecipadamente!

Att,
Aroldo

6 Respostas

denis_gariglio

Cara … o que vc pode fazer é o seguinte, antes de vc inserir pega o proximo valor da PK e ja joga no seu jsp de cadastro … assim qdo for cadastrar vc ja tem a PK vinculada ao cadastro =) e nao vai ter problemas para recuperar esse cadastro feito.

Espero ter ajudado.

Abraços

A

Mas será que eu consigo garantir a integridade? Em um sistema com, sei lá, digamos 100 usuários simultâneos, não correria o risco de quebrar a referência? O problema é que não posso testar também, teria que ver em funcionamento.

denis_gariglio

Eu tenho um sistema de atendimento on-lie que esta vinculado varias clinicas de planos de saude.
Eu uso isso … eu meio que ja deixo “reservado” esse codigo .

denis_gariglio

Cara … esquece tudo o que te falei … tava com a cabeça em outro problema e te falei besteira … me desculpe.
Agora que vi o que realemnte precisa … deixa eu ver se entendi para não falar besteira novamente.
Você tem uma PK e algumas PKs certo?
O que vc quer é retornar tipo um protocolo depois do cadastro?

Abraços

A

Não cara, acho que você entendeu certo mesmo. O problema é esse mesmo, recuperar o dado que eu acabei de inserir, mas junto da PK, que é incrementada automaticamente.

denis_gariglio

Tenta o seguinte, retirar a PK como auto incremento e faz algo como o exemplo

public Long getNroGuia() {

		Conexao conexao;
		String sql;
		String sql2;

		sql = " SELECT (par_guia + 1) nroguia FROM parametro ";
		sql2 = " UPDATE parametro SET par_guia = ? ";

		PreparedStatement stm;

		try {

			conexao = Conexao.getInstance();
			stm = conexao.getConexao().prepareStatement(sql);
			ResultSet res = null;

			Long nroGuia = null;

			synchronized (this) {
				res = stm.executeQuery();
				res.next();
				nroGuia = new Long(res.getLong("nroguia"));

				stm = conexao.getConexao().prepareStatement(sql2);
				stm.setLong(1, nroGuia.longValue());
				stm.execute();
			}

			res.close();
			stm.close();

			return nroGuia;

		} catch (SQLException e) {
			logger.error(e);
			return (new Long(0));
		} catch (Exception e) {
			logger.error(e);
			return (new Long(0));
		}

	}

Assim ja tem uma PK e a proxima esta la garantida.
Abraços

Criado 17 de fevereiro de 2011
Ultima resposta 17 de fev. de 2011
Respostas 6
Participantes 2