Erro no getInstance()

12/04/2011

0

Esztou começando com PostgreSql e num classe de teste que fiz, baseada em um modelo que me passaram, dá erro no getInstance(). Eis abaixo o meu tutorial:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
          
           class Exemplo1  
           {  
             
              public static void main(String args[])  
              {  
          
               
              // A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.  
              // Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try  
               
              Connection con = null;  
          
              try  
              {  
                  // Este é um dos meios para registrar um driver  
                  Class.forName( "org.postgresql.Driver" ).getInstance();   
                 
                  // Registrado o driver, vamos estabelecer uma conexão  
                  con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","web","web");  
          
                  // Após estabelecermos a conexão com o banco de dados  
                  // Utilizamos o método createStatement de con para criar o Statement  
                  Statement stm = con.createStatement();   
             
                  // Vamos executar o seguinte comando SQL :  
                  String SQL = "select ct.contato_tipo as contato, c.dado as dado " +  
                                  "from pessoas p, contatos c, contatos_tipos ct" +  
                                  "where p.id = c.id_pessoa" +  
                                  "and c.id_tipo_contato = ct.id";  
          
                  // Definido o Statement, executamos a query no banco de dados  
                  ResultSet rs = stm.executeQuery(SQL);  
             
                  // O método next() informa se houve resultados e posiciona o cursor do banco  
                  // na próxima linha disponível para recuperação  
                  // Como esperamos várias linhas utilizamos um laço para recuperar os dados  
                  while(rs.next())  
                  {  
          
                     // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:  
                     String tit = rs.getString("contato");  
                     String aut = rs.getString("dado");  
                     //int totalFaixas = rs.getInt("total_faixas");  
          
                     // As variáveis tit, aut e totalFaixas contém os valores retornados  
                     // pela query. Vamos imprimí-los  
          
                     //System.out.println(48:"Titulo: "+tit+" Autor: "+aut+"49:                Tot. Faixas: "+totalFaixas);  
                     System.out.println(tit + ": " + aut);  
                  }  
          
              }  
              catch(SQLException e)  
              {  
                  // se houve algum erro, uma exceção é gerada para informar o erro  
                  e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou  
              }  
              finally  
              {  
                 try  
                 {  
                    con.close();  
                 }  
                 catch(SQLException onConClose)  
                 {  
                     System.out.println("Houve erro no fechamento da conexão");  
                     onConClose.printStackTrace();  
                 }  
              } // fim do bloco try-catch-finally  
              } // fim da main  
                 
           } // fim de nosso primeiro exemplo !

Pjava

Pjava

Responder

Posts

12/04/2011

Davi Costa

Tente:
Class.forName("org.postgresql.Driver");
        Connection conexao = DriverManager.getConnection(
                "jdbc:postgresql://localhost:5432/seuBanco", "seuLogin",
                "suaSenha");


Att Davi
Responder

12/04/2011

Pjava

Continua com erro. Eu realmente preciso do ClassForName?
Responder

12/04/2011

Davi Costa

Colocou o driver do postgres na sua aplicação?
Qual erro que dá, aparentemente, parece que vc no colocou o jar do postgres no seu build-path.

Att Davi 
Responder

12/04/2011

Pjava

Eu mudei a conexão para essa aí abaixo e me dá o seguinte erro:
import java.sql.DriverManager;
import java.sql.SQLException;

import com.arjuna.ats.internal.arjuna.recovery.Connection;


public class Conexao {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String driver = "org.postgresql.Driver";  
        String user   = "postgres";  
        String senha = "eguru";  
        String url      = "jdbc:postgresql://localhost:5435/postgres";  
  
        try  
        {  
            Class.forName(driver);  
            Connection con = null;  
  
            con = (Connection) DriverManager.getConnection(url, user, senha);  
  
            System.out.println("Conexão realizada com sucesso.");  
  
        }  
        catch (ClassNotFoundException ex)  
        {  
            System.err.print(ex.getMessage());  
        }   
        catch (SQLException e)  
        {  
            System.err.print(e.getMessage());  
        }  
    }  

    }

O erro é esse:
Exception in thread "main" java.lang.ClassCastException: org.postgresql.jdbc4.Jdbc4Connection cannot be cast to com.arjuna.ats.internal.arjuna.recovery.Connection
    at Conexao.main(Conexao.java:23)

Me falaram sobre pool de conexão, mas eu não tenho idéia disso. Como fazer? Minha aplicação é web e deve ser bem robusta, pois terá muita gente acessando simultaneamente e preciso de algo bem robusto. Será para funcionário público e deverá ter gente de início do, RJ, SP e DF.

Responder

12/04/2011

Davi Costa

Cara o problema que eu tou vendo é de porta:

public static void main(String[] args) {
        String driver = "org.postgresql.Driver"; 
        String user   = "postgres"; 
        String senha = "eguru"; 
        String url      = "jdbc:postgresql://localhost:5435/postgres"; 
 
        try 

O ideal(default - creio eu tb que vc não deva ter alterado a porta do postgresql) seria:




public static void main(String[] args) {
        String driver = "org.postgresql.Driver"; 
        String user   = "postgres"; 
        String senha = "eguru"; 
        String url      = "jdbc:postgresql://localhost:5432/postgres"; 
 
        try 


Att Davi


Responder

12/04/2011

Pjava

Estava dando pau nessa porta 5432 e aí eu troquei para a 5435. Nessa o postgreSql está funcionando bem. O problema está no cast con = (Connection) DriverManager.getConnection(url, user, senha); isso tem a ver com o import import com.arjuna.ats.internal.arjuna.recovery.Connection;, mas não sei como resolver isso.
Responder

12/04/2011

Davi Costa

Ahhhh beleza cara,
use esses imports:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


Att Davi
Responder

12/04/2011

Davi Costa

Só complementado com esse import não vai precisar mais de cast.

Att Davi
Responder

12/04/2011

Dyego Carmo

Resolvido ?

Se sim favor fechar o seu post ;)

Valeu !


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar