Erro no getInstance()
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
Curtidas 0
Respostas
Davi Costa
12/04/2011
Tente:
Class.forName("org.postgresql.Driver");
Connection conexao = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/seuBanco", "seuLogin",
"suaSenha");
Att Davi
Class.forName("org.postgresql.Driver");
Connection conexao = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/seuBanco", "seuLogin",
"suaSenha");
Att Davi
GOSTEI 0
Pjava
12/04/2011
Continua com erro. Eu realmente preciso do ClassForName?
GOSTEI 0
Davi Costa
12/04/2011
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
Qual erro que dá, aparentemente, parece que vc no colocou o jar do postgres no seu build-path.
Att Davi
GOSTEI 0
Pjava
12/04/2011
Eu mudei a conexão para essa aí abaixo e me dá o seguinte erro:
O erro é esse:
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.
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.
GOSTEI 0
Davi Costa
12/04/2011
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
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
GOSTEI 0
Pjava
12/04/2011
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.
GOSTEI 0
Davi Costa
12/04/2011
Ahhhh beleza cara,
use esses imports:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
Att Davi
use esses imports:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
Att Davi
GOSTEI 0
Davi Costa
12/04/2011
Só complementado com esse import não vai precisar mais de cast.
Att Davi
Att Davi
GOSTEI 0
Dyego Carmo
12/04/2011
Resolvido ?
Se sim favor fechar o seu post ;)
Valeu !
Se sim favor fechar o seu post ;)
Valeu !
GOSTEI 0