Erro Localizar Tabela (postgree) com esquema eclipse (java) RESOLVIDO

3 respostas
R

Olá pessoal, procurei por ai em todo lugar mas nao encontrei resposta, sou iniciante com java e postgree… :lol: preciso de ajuda!!!

Estou usando o eclipse 3.1 com o jdk1.6.0_02 e Postgree 8.3, pois bem…

ja consegui me conectar ao banco que foi uma beleza, segue o codigo…

Banco: (AdminOfc)
Tabela: ([color=red]esquema[/color].HeadOs)

o esquema acima citado é o: ([color=red]oficina[/color])

if (con== null){      
  try{      
    Class.forName("org.postgresql.Driver");      
    con = DriverManager.getConnection  ("jdbc:postgresql://localhost:5432/AdminOfc","reunix","admin");      
 } catch (SQLException e) {      
    System.err.println("Erro: "+e);      
    con = null;      
 } catch (ClassNotFoundException e) {      
   System.out.println("Drive JDBC(PostGree) Não Encontrado");      
   e.printStackTrace();      
}      
}

quando vou tentar fazer um consulta, ele nao consegue localizar a tabela:

// Buscar Dados;      
String result_busca = BUSCA_INVALIDA;      
try{      
   stm = con.createStatement();      
   rs  = stm.executeQuery("select * from [color=red]oficina[/color].HeadOs");                          
   if (rs.next()) {      
      System.out.println(rs.getString("Nome"));      
   } else     
     result_busca  = BUSCA_INVALIDA;      
     rs.close();      
     stm.close();      
   } catch (SQLException  e) {      
      System.out.println("Erro: "+e);      
      }

[color=blue]a consulta não conseque localizar a tabela.[/color]

diz o seguinte:

OBS. as tabelas estao separadas por (Esquemas):

oficina."Heados"
public."clientes".....

tbem nao funciona.

ja tentei fazer a clausula (select) assim (select Nome from Heados)

(select Nome from oficina.Heados)
(select Nome from oficina.'Heados')

e nao consegue localizar a tabela.

Lembro-me que quando estava criando as tabelas com o pgAdminIII
foi na janela de SQL e quando precisava consultar alguma tabela do esquema (oficina) tunha que fazer o seguinte codigo:

select "Nome", "Veiculo" from [color=red]oficina."Heados"[/color], "Clientes"  where "Cliente"  = "Nome"

e la no pgAdminIII funciona.

Favor se alguem poder me ajudar, seria muito bom!!
Desde ja agradeço

Renato.

3 Respostas

R

Alõu pessoal depois de muitas tentativas resolvi o problema da seguinte forma:

antes de toduo…
o problema esta na instrucao

rs  = stm.executeQuery("SELECT * FROM oficina."Heados" ");

seria impossível adicionar uma (" “) dentro da instrução já com (” ")
mas pelo que notei não da pra localizar tabelas e campos sem as ( “”)
no proprio pgAdminIII é obrigatório.

mas…
resolvi da seguinte forma: é apenas um quebra galho, para sistemas maiores seria dor de cabeça: mas nada q uma funcaozinha resolva;

char cAspas  = (char) '"';  // Codigo 34 do ASC   
rs  = stm.executeQuery("SELECT * FROM oficina."+cAspas+"HeadOs"+cAspas+" WHERE "+cAspas+"Prisma"+cAspas+" = 'VERDE'");

que no fim das contas ficaria assim:

(SELECT * FROM oficina."Heados"  WHERE "Prisma" = 'VERDE')

funcionou q foi uma beleza, por hoje é so pessoal valeu!!!
e obg.

DEVE EXISTIR UMA MANEIRA MELHOR!!!???

eltonk

Putz…
Que problema bizonho hehehe

Tentou utilizar o caracter de escape?

Algo como isso:

rs  = stm.executeQuery("SELECT * FROM oficina.\"Heados\" ");

ou até mesmo aspas simples com o caracter de escape?
Talvez fique mais elegante a solução…

Abraços

R

Sim…

"SELECT * FROM public.\"Clientes\"  WHERE \"Nome\" LIKE '%RENATO%'"

desta forma funciona.

aspas simples não funciona.

citaram sobre “ANSI” no pgAdminIII mas ainda não sei onde é.
at+

Criado 12 de março de 2008
Ultima resposta 17 de mar. de 2008
Respostas 3
Participantes 2