Tenho um problema no meu código. Como podem ver nele, eu estou tentando fazer uma session com o valor “MarcaeModelo”.
Mas tenho um problema pois ele só faz session do IDArrefecimento=2 e nao faz do IDArrefecimento=1.
Se eu tivesse um IDArrefecimento=3 ele fazia session desse ai mas já não fazia do 1 e do 2!
Porque será? O que me estou a esquecer?
Problema básico
12 Respostas
sonkinha, acho q vc deva separar seus codigos no conceito MVC. assim fica mais legivel o codigo e facilita pra vc.
Muito obrigado pela sua sugestão mas meu projecto está quase no fim e possui muitas páginas JSP neste formato. Só me irá dar trabalho.
Vlw.
Mais alguma sugestão?
Eu axo que já axei o problema, você ta usando a mesma variavel para atribuir as duas session
st = conn.createStatement();
xt = "select * from tabela1 where IDArrefecimento='1' ;";
rs = st.executeQuery (xt);
rs.next();
MarcaeModeloMysql = rs.getString("MarcaeModelo");
//REPARE QUE O NOME É O MESMO QUE VOCE USA PARA O ID 2;
session.setAttribute("MarcaeModelod",MarcaeModeloMysql);
st = conn.createStatement();
xt = "select * from tabela1 where IDArrefecimento='2' ;";
rs = st.executeQuery (xt);
rs.next();
MarcaeModeloMysql = rs.getString("MarcaeModelo");
//NOVAMENTE VC USOU MarcaeModelod
session.setAttribute("MarcaeModelod",MarcaeModeloMysql);
Uma ta sobrescrevendo a outra. Por isso só a DArrefecimento=‘2’ vai aparecer.
tenta explicar melhor o problema…
oq vc ker fazer exatamente?
pelo que estou vendo vc faz 2 selects um com IDArrefecimento=1 e outro =2
não vai me dizer que vc quer fazer um outro =3 ?
alem do código estar uma bagunça, fora de qualquer padrão existente no Java,
tenta explicar melhor o problema…oq vc ker fazer exatamente?
pelo que estou vendo vc faz 2 selects um com IDArrefecimento=1 e outro =2
não vai me dizer que vc quer fazer um outro =3 ?
alem do código estar uma bagunça, fora de qualquer padrão existente no Java,
Cara. Não digo que vou ter 3. Digo a você que vou ter mais de 20 e em outras páginas :shock:
Eu sei que meu código está uma bagunça. Sou novato nisto mas também meu projecto é algo caseiro, não é nada sério.
O que estou tentado fazer é o seguinte:
Tenho um botão nesse código ae. Quando carrego nesse botao ele vai redireccionar para outra página que vai inserir a session na base de dados. Mas só insere a ultima.
Eu axo que já axei o problema, você ta usando a mesma variavel para atribuir as duas sessionst = conn.createStatement(); xt = "select * from tabela1 where IDArrefecimento='1' ;"; rs = st.executeQuery (xt); rs.next(); MarcaeModeloMysql = rs.getString("MarcaeModelo"); //REPARE QUE O NOME É O MESMO QUE VOCE USA PARA O ID 2; session.setAttribute("MarcaeModelod",MarcaeModeloMysql); st = conn.createStatement(); xt = "select * from tabela1 where IDArrefecimento='2' ;"; rs = st.executeQuery (xt); rs.next(); MarcaeModeloMysql = rs.getString("MarcaeModelo"); //NOVAMENTE VC USOU MarcaeModelod session.setAttribute("MarcaeModelod",MarcaeModeloMysql);Uma ta sobrescrevendo a outra. Por isso só a DArrefecimento=‘2’ vai aparecer.
O problema não pode ser dai cara. Quando for inserir os dados na outra o código não vai dar certo.
xt = "Insert into tabela2 (NomeUtilizador, MarcaeModelo) values ('"+Userd+"', '"+MarcaeModelod+"');";
cara pelo o q eu entendi de seu codigo vc cria 2 session com o mesmo nome… eu ainda não intendi o que você está querendo :?
Sonkinha,
Seguinte, como o pessoal falou vc está atribuindo valoers diferentes pra mesma vairável…
No session, em java, quando vc atrubiu um valor pra uma variável que já existe ele sobreescreve o valor.
session.setAttribute("<nomeDaVariavel>","<valorDaVariavel>");
Se eu faço isso:
session.setAttribute("contator","UM");
session.setAttribute("contator","DOIS");
session.setAttribute("contator","TRES");
ao fazer isso:
session.getAttribute("contator");
ele vai me retornar TRES, pois eu sobreescrevi os valores anteriores.
Agora se eu fizer:
session.setAttribute("contator_um","UM");
session.setAttribute("contator_dois","DOIS");
session.setAttribute("contator_tres","TRES");
Quando eu fizer, por exemplo:
session.getAttribute("contator_dois");
Ele vai me retornar DOIS
Uma dica, vc pode usar o ID de pesquisa pra montar o nome da variável da session.
int id_pesquisa = 2;
session.setAttribute("MarcaeModelod_"+id_pesquisa,MarcaeModeloMysql);
flws… :arrow:
é isso que o edumoreira explicou … se não for só isso, mude isso em seu código pq da maneira q vc fez ta furada.
O problema não é ter 2 variáveis com o mesmo nome! Já mudei o nome delas e faz o mesmo!
st = conn.createStatement();
xt = "select * from tabela1 where IDArrefecimento='1' ;";
rs = st.executeQuery (xt);
rs.next();
MarcaeModelo1Mysql = rs.getString("MarcaeModelo");
session.setAttribute("MarcaeModeloa",MarcaeModelo1Mysql);
st = conn.createStatement();
xt = "select * from tabela1 where IDArrefecimento='1' ;";
rs = st.executeQuery (xt);
rs.next();
MarcaeModelo2Mysql = rs.getString("MarcaeModelo");
session.setAttribute("MarcaeModeloa",MarcaeModelo2Mysql);
String geral=null;
if (MarcaeModeloa!=null){
geral=MarcaeModeloa;}
if (MarcaeModelob!=null){
geral=MarcaeModelob;}
if (id!=1){
st = conn.createStatement();
xt = "Insert into tabelacompras (NomeUtilizador, MarcaeModelo) values ('"+Userd+"', '"+geral+"');";
st.executeUpdate(xt);
conn.close();
Alguém sabe qual o problema?