Dúvida com SELECT em tabelas Relacionadas

3 respostas
W

Boa tarde pessoal !

Tenho uma aplicação que faz o seguinte: Eu efetuo o login com email e senha, após efetuar o login eu buscar no banco de dados os atributos nome, endereço, telefone, email, senha…
e seto os atributos de usuario, quando isso acontece é disponibilizado uma tele para eu cadastrar os medicamentos.

Eu preciso pegar o idUsuario e idRemedio, para preencher o campo da tabela prescricaoRemedio. Pois idUsuario e idRmedio são chaves estrangeiras .
idUsuario com os atributos campos setados apos o login.
idRemedio coms os mesmo atributos setados após cadastrar o login.

ou seja isso está acontecendo,mas na minha classe DAO está dando um erro que não consigo encontrar o mesmo:

public class PrescricaoRemedioDAO {

    public boolean inserirDados(Usuario usuario, PrescricaoRemedio pscRemedio) {
        int idRemedio = 0;
        int idUsuario = 0;
        boolean resultado = false;

        Connection con = Conexao.conectar();     

        try {          
            
            String consultaRem = "SELECT idRemedio FROM remedio WHERE remedio = "+pscRemedio.getMedicamento().getRemedio();// NESSE PONTO ENTRE ASPAS PARA QUE O MYSQL ENTENDA COMO UM SELECT, FICARIA ASSIM : SELECT idRemedio FROm remedio where remedio = "nome do remedio"; entre aspas, mas como fazer?
            PreparedStatement pst = con.prepareStatement(consultaRem);
            ResultSet rs = pst.executeQuery();
            if (rs.next()) {                
                idRemedio = rs.getInt(1); // AGORA NÃO SEI SE ESSE RS.NEXT ESTARIA CORRETO.
                JOptionPane.showMessageDialog(null, "idremedio "+idRemedio);                    
            }
           
            String consultaUser = "SELECT idUsuario FROM usuario WHERE nome = "+usuario.getNome();    
            PreparedStatement ps = con.prepareStatement(consultaUser);
            ResultSet rset = ps.executeQuery();
            if (rset.next()) {
                idUsuario = rset.getInt(1);
                 JOptionPane.showMessageDialog(null, "idusuario "+idUsuario); 
            }
            
            String inserir = "INSERT INTO prescricaoRemedio (dataInicio,qtdDias,qtdVezesDia,idRemedio,idUsuario) VALUES(?,?,?,?,?)";
            PreparedStatement p = con.prepareStatement(inserir);
            p.setString(1, pscRemedio.getDataInicio());
            p.setInt(2, pscRemedio.getQtdDias());
            p.setInt(3, pscRemedio.getQtdVezesDias());
            p.setInt(4, idRemedio);
            p.setInt(5, idUsuario);
            p.execute();
            con.close();
            resultado = true;


        } catch (SQLException ex) {
            ex.printStackTrace();
            resultado = false;
        }
        return resultado;
    }
}

3 Respostas

Kanin_Dragon

Jovem,

Post a mensgem do erro ?

Abs,

esdmorais

Faltou aspas simples. Tente dessa maneira:

String consultaRem = "SELECT idRemedio FROM remedio WHERE remedio = '" + pscRemedio.getMedicamento().getRemedio() + "'";
// NESSE PONTO ENTRE ASPAS PARA QUE O MYSQL ENTENDA COMO UM SELECT, FICARIA ASSIM : SELECT idRemedio FROm remedio where remedio = "nome do remedio"; entre aspas, mas como fazer?

veja se funciona.

W

esdmorais !

Obrigado pela ajuda, problema solucionado.
Acredita, cara que foi somente as aspas mesmo. A minha dificuldade era essa mesmo.

Valeu pela ajuda, um abraço !

Criado 13 de junho de 2011
Ultima resposta 13 de jun. de 2011
Respostas 3
Participantes 3