Problema básico

12 respostas
Sonkinha

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?

12 Respostas

mauricioadl

sonkinha, acho q vc deva separar seus codigos no conceito MVC. assim fica mais legivel o codigo e facilita pra vc.

Sonkinha

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.

Sonkinha

Mais alguma sugestão?

alexvingg

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.

alucardeck

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,

Sonkinha

alucardeck:
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.

Sonkinha

alexvingg:
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.

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+"');";
alexvingg

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 :?

edumoreira

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:

alexvingg

é 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.

Sonkinha

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();
Sonkinha

Alguém sabe qual o problema?

Criado 15 de abril de 2011
Ultima resposta 20 de abr. de 2011
Respostas 12
Participantes 5