Where no Oracle

12 respostas
pix

Não estou conseguindo fazer o WHERE no oracle de nenhuma forma, segue abaixo como estou tentando executar.

Connection conn = Conexao.getInstance().getConnection(); try { String sql = "SELECT IBGE, estado from T_ARQMUNIC where nome = ? and estado = ?"; //"SELECT IBGE, estado from T_ARQMUNIC where nome = '" + municipioDest.trim().replace("'", "") + "' and estado = '" + estadoDest.trim() + "'"; PreparedStatement sta = conn.prepareStatement(sql); sta.setString(1, municipioDest.trim().replace("'", "")); sta.setString(2, estadoDest.trim()); ResultSet rs = sta.executeQuery(); sta = conn.prepareStatement(sql); while (rs.next()) { codMuniDest = String.valueOf(rs.getInt(1)); ufDest = rs.getString(2); System.out.println("cheguei"); } } catch (SQLException e) { System.out.println("Ocorreu um erro interno " + e.getMessage()); }

12 Respostas

pmlm

Dá algum erro?

Apaga esta linha:sta = conn.prepareStatement(sql);

lucas_carvalho100

danielmbiz:
Não estou conseguindo fazer o WHERE no oracle de nenhuma forma, segue abaixo como estou tentando executar.

Connection conn = Conexao.getInstance().getConnection(); try { String sql = "SELECT IBGE, estado from T_ARQMUNIC where nome = ? and estado = ?"; //"SELECT IBGE, estado from T_ARQMUNIC where nome = '" + municipioDest.trim().replace("'", "") + "' and estado = '" + estadoDest.trim() + "'"; PreparedStatement sta = conn.prepareStatement(sql); sta.setString(1, municipioDest.trim().replace("'", "")); sta.setString(2, estadoDest.trim()); ResultSet rs = sta.executeQuery(); // SEU ERRO ESTA AQUI sta = conn.prepareStatement(sql); while (rs.next()) { codMuniDest = String.valueOf(rs.getInt(1)); ufDest = rs.getString(2); System.out.println("cheguei"); } } catch (SQLException e) { System.out.println("Ocorreu um erro interno " + e.getMessage()); }

Voce passa duas vezes a conexão para o PreparedStatement, ai vc perde a consulta

pix

Mesmo passando a conexão só uma vez a consulta não resulta nada, no developer ela exibe o resultado normalmente, ta bem estranho.

Connection conn = Conexao.getInstance().getConnection(); try { String sql = "SELECT IBGE, estado from T_ARQMUNIC where nome = ? and estado = ?"; PreparedStatement sta = conn.prepareStatement(sql); sta.setString(1, municipioDest.trim().replace("'", "")); sta.setString(2, estadoDest.trim()); ResultSet rs = sta.executeQuery(); //sta = conn.prepareStatement(sql); while (rs.next()) { codMuniDest = String.valueOf(rs.getInt(1)); ufDest = rs.getString(2); System.out.println("cheguei"); } } catch (SQLException e) { System.out.println("Ocorreu um erro interno " + e.getMessage()); }

lucas_carvalho100
# sta.setString(1, municipioDest.trim().replace("'", ""));  
#                 sta.setString(2, estadoDest.trim());

Esta vindo valores nessas variaveis?

pix

Sim, já testei isto tentei usar o OracleResultSet e não funcionou também.

Alguém ai poderia postar um exemplo pra eu comparar?

A conexão estou fazendo da seguinte forma, usando o jdbc ojdbc6.jar da versão 11g, tentei usar o ojdbc6_g.jar também sem resultados.

try { Class.forName("oracle.jdbc.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.253:1521:xxx", "xx", "xx"); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); }

lucas_carvalho100

Cara eu uso esse jar aqu ojdbc14-10.2.0.2.jar, e trabalho com o 10g tb e o class for name eu coloco assim oracle.jdbc.driver.OracleDriver, muda ai pra ver…
Ele da algum erro?

Tchello

Primeiro, qual exception ta dando? Poste pelo menos o começo da StackTrace dele aqui.

Segundo, da uma olhada na sua query, não ta faltando o “_” (underline) no nome da tabela?

pix

Esse é o problema não da nenhuma exeção, ele só não faz o SQL, não mostra resultado nenhum, porém um imprimo a expressão SQL e coloco diretamente no developer é é exibido o resultado.

O underline está ali

troquei a expressão da conexão para oracle.jdbc.driver.OracleDriver e continua a mesma coisa

pix

só pra conhecimento estou usando o jdbc que está aqui http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_111060.html

ojdbc6.jar

Tchello

Tenta assim:

PreparedStatement sta = conn.prepareStatement(sql);  
                sta.setString(0, municipioDest.trim().replace("'", ""));   //troquei o 1 por 0
                sta.setString(1, estadoDest.trim());    //troquei o 2 por 1
lucas_carvalho100

Altera o seu código e coloca
[/code]System.out.println(municipioDest.trim().replace("'", ""));
System.out.println(estadoDest.trim());[code]

e verifica se realmente esta vindo o valor nessas duas linhas acima, só por precaução mesmo...

pix

já tinha verificado e vinha valores como falei anteriormente.

como é uma das primeiras vezes que estou trabalhando com oracle acabei colocando uma versão errada do jdbc, tinha vários jdbc para a versão 11, agora está funcionando.

Obrigado pelas dicas que ajudaram a melhorar o código

Criado 1 de junho de 2010
Ultima resposta 1 de jun. de 2010
Respostas 12
Participantes 4