Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

PreparedStatement nao inclui aspas simples na consulte de String

Boa tarde, estou fazendo uma consulta no banco de dados Oracle pelo PreparedStatement , segue a classe de consulta:

package br.portalRadex.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.portalRadex.conexao.Conexao;
import br.portalRadex.modelo.Agentes;

public class AgentesDao {

    public Agentes login(String nome, String senha) throws ClassNotFoundException, SQLException {

        Connection con = new Conexao().getConnection();
        Agentes agente = new Agentes();

        PreparedStatement smt = con.prepareStatement(" select a.agn_in_codigo, " 
                                                    + " a.agn_st_nome, "
                                                    + " a.agn_st_senha " 
                                                    + " from mgglo.glo_agentes a" 
                                                    + " where a.agn_st_nome = " 
                                                    +  nome );

        ResultSet resultSet = smt.executeQuery();

        while (resultSet.next()) {
            if (resultSet.getString("agn_st_nome").equals(nome) && resultSet.getString("agn_st_senha").equals(senha)) {
                agente.setNome(resultSet.getString("agn_st_nome"));
                agente.setCodigo(resultSet.getInt("agn_in_codigo"));
                agente.setSenha(resultSet.getString("agn_st_senha"));

                System.out.println("Seu nome de Usuario é: " + agente.getNome() + " e sua senha é: " + agente.getSenha());

Ele me retorna o Erro: ora-00933: comando sql não encerrado adequadamente , extamente como se eu consultasse se em as aspas simples como se faz consulta de String no Oracle, o PreparedStatement , nao deveria adicionar essas aspas automaticamente?

ate agora a unica forma que conseguir realizar a consulta foi dessa forma:

PreparedStatement smt = con.prepareStatement(" select a.agn_in_codigo, " 
                                                    + " a.agn_st_nome, "
                                                    + " a.agn_st_senha " 
                                                    + " from mgglo.glo_agentes a" 
                                                    + " where a.agn_st_nome = " 
                                                    + "'" + nome + "'");

mas acho q isso é uma gambiarra né, se alguém puder me mostrar onde esta o erro agradeço.

Valeu galera.

2 respostas
solução!

Fala aí, Gabriel! Tudo certo, cara? =)

Acredito que isso não seja gambiarra, não, cara. Rs. Como você precisa das aspas na verificação de uma String, você precisa passá-las manualmente, sacou? =|

Fábio

Tudo certo Fabio e vc? puts cara achei que o PreparedStatement fazia isso automaticamente como ele é uma interface que 'prepara' o sql achei que fazia isso automaticamente.

obrigado pela explicação.