Select no java não obedece filtros no where

Olá pessoal: tenho um objeto
[b]
private boolean preencher_objeto_Pesquisa(){
try{

objAgendaPesquisa = new AgendaPesquisa();

objAgendaPesquisa.setDoutor(jcbAg_PesquisaDoutor.getSelectedItem().toString());
objAgendaPesquisa.setNome(jcbAg_PesquisaPaciente.getSelectedItem().toString());
objAgendaPesquisa.setDatainicial(new java.sql.Timestamp(jftAg_PesquisaDataInicial.getDate().getTime()));
objAgendaPesquisa.setDatafinal(new java.sql.Timestamp(jftAg_PesquisaDataFinal.getDate().getTime()));
objAgendaPesquisa.setTipoagendamento(jcbAg_PesquisaTipo.getSelectedItem().toString());
objAgendaPesquisa.setHora(jftAg_PesquisaHora.getText());
objAgendaPesquisa.setStatus(jcbAg_PesquisaStatus.getSelectedItem().toString());

return true;
    }catch(Exception erro){
        JOptionPane.showMessageDialog(null,"Erro ao preencher o objeto");
        return false;
    }
}

[/b]

que é preenchido antes de passar os parâmetros para o select abaixo:

[b]
public Vector PesquisarAgenda(AgendaPesquisa objAgendaPesquisa) throws SQLException{

    Conexao conexao = new Conexao();
    Vector linhas = new Vector();

    PreparedStatement pstmt = conexao.getConexao()
            .prepareStatement("SELECT doutor, nome, data, hora, tipoagendamento, status "
            + "FROM agenda "
            + "where (doutor = ' " + objAgendaPesquisa.getDoutor() + " ' or ' " + objAgendaPesquisa.getDoutor() + " ' is null )"
            + "  or  (nome   = ' " + objAgendaPesquisa.getNome()    + " ' or ' " + objAgendaPesquisa.getNome()   + " ' is null ) "
            + "  or  (data   >= ' " + objAgendaPesquisa.getDatainicial()    + " ' or '" + objAgendaPesquisa.getDatainicial()   + " ' is null ) "
            + "  or  (data   <= ' " + objAgendaPesquisa.getDatafinal()    + " ' or '" + objAgendaPesquisa.getDatafinal()   + " ' is null ) "
            + "  or  (hora   = ' " + objAgendaPesquisa.getHora()    + "' or ' " + objAgendaPesquisa.getHora()   + " ' is null ) "
            + "  or  (tipoagendamento   = ' " +objAgendaPesquisa.getTipoagendamento()    + " ' or '" + objAgendaPesquisa.getTipoagendamento()   + " ' is null ) "
            + "  or  (status   = ' " + objAgendaPesquisa.getStatus()    + " ' or ' " + objAgendaPesquisa.getStatus()   + " ' is null ) "
            );

    ResultSet rs = pstmt.executeQuery();

        while(rs.next())
        {
            objAgendaPesquisa = new AgendaPesquisa();
            objAgendaPesquisa.setDoutor(rs.getString("doutor"));
            objAgendaPesquisa.setNome(rs.getString("nome"));
            objAgendaPesquisa.setData(rs.getTimestamp("data"));
            objAgendaPesquisa.setHora(rs.getString("hora"));
            objAgendaPesquisa.setTipoagendamento(rs.getString("tipoagendamento"));
            objAgendaPesquisa.setStatus(rs.getString("status"));
            
            Vector novalinha = new Vector();
            novalinha.addElement(objAgendaPesquisa.getDoutor());
            novalinha.addElement(objAgendaPesquisa.getNome());
            novalinha.addElement(objAgendaPesquisa.getData());
            novalinha.addElement(objAgendaPesquisa.getHora());
            novalinha.addElement(objAgendaPesquisa.getTipoagendamento());
            novalinha.addElement(objAgendaPesquisa.getStatus());
            
            linhas.addElement(novalinha);

        }
    return linhas;        

}
[/b]

O problema é que no SQL Server esse select está correto, mas no java ele joga tudo o que tá na tabela agenda do banco, como se o meu select não tivesse restrição.
Acho que o objeto não está levando a informação correta para a consulta.

Como resolver pessoal ?

Olá tenta usar o PreparedStatement, acredito que com isso vai tirar algumas dores de cabeça.

http://www.guj.com.br/articles/115