Conexão java com o oracle - ERRO

8 respostas
mestrekame

Olá comunidade.

Pela primeira vez estou tentando utilizar o oracle e está acontecendo o seguinte problema.

Fiz a seguinte classe para conexao:

public class ConnectionBean
{
    private final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver"; //nome do Driver do banco de dados
    private final String DATABASE_URL = "jdbc:oracle:oci:@000.000.000.000:5560:teste"; //nome da URL do banco de dados
    private final String USUARIO="user"; //usuario para conexao com o banco de dados
    private final String SENHA="senha";   //senha para conexão com o banco de dados
    static private ConnectionBean instance= null;
    
    static synchronized public ConnectionBean getInstance() 
    {
        if (instance == null) {
            instance = new ConnectionBean();
        }
        return instance;
    }
    
    private ConnectionBean() 
    {
        try {
            Class.forName(this.JDBC_DRIVER);
        } catch(Exception e){System.out.println(e.getMessage());};
       
    }
   
    public synchronized void devolveConnection(Connection con) 
    {
        
        if (con != null) {
            try {
                if (!con.isClosed())
                    con.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
                System.out.println("disparou");
            }
           // System.out.println("Devolveu!");
            notify();
        }
    }
    
    public synchronized Connection getConnection()
    {
        Connection conaux = null;
        try {
            conaux = DriverManager.getConnection(this.DATABASE_URL,this.USUARIO,this.SENHA);
        } catch(Exception e){System.out.println(e.getMessage());};
        
        if (conaux== null) {
            try {
                wait(5000);
            }
            catch (InterruptedException e) {};
            try {
                conaux = DriverManager.getConnection(this.DATABASE_URL,this.USUARIO,this.SENHA);
            } catch(Exception e){System.out.println(e.getMessage());};
        }
        
        return conaux;
    }
    
}

E fiz essa classe main para testar:

public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws SQLException {
       ConnectionBean con = null;
       Connection conexao = con.getInstance().getConnection();
       
       ResultSet result=null;
       Statement statement = conexao.createStatement(); //cria um Statement para consulta
            
       String comandoSQL = "SELECT * FROM ajs_contatos";
       result = statement.executeQuery(comandoSQL); //consulta o banco de dados
            
       while(result.next()) 
       {
            System.out.println(result.getInt("id_contato") + result.getString("nome"));
       }
    }
 }

Quando eu rodo aparece a seguintes mensagens de erro:

Exception in thread main java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1517)

at java.lang.Runtime.loadLibrary0(Runtime.java:788)

at java.lang.System.loadLibrary(System.java:834)

at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3139)

at java.security.AccessController.doPrivileged(Native Method)

at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3135)

at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:221)

at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:439)

at oracle.jdbc.driver.T2CConnection.(T2CConnection.java:132)

at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:78)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)

at java.sql.DriverManager.getConnection(DriverManager.java:512)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at persistencia.ConnectionBean.getConnection(ConnectionBean.java:59)

at Main.Main.main(Main.java:30)

Java Result: 1

Tentei procurar esse tal de ocijdbc10 no site da oracle mas nao achei.

Desde já agradeço por qualquer luz

8 Respostas

ramilani12

Vc adicionou o driver do Oracle no seu CLASSPATH?
Leia essa tutorial pode ajudar
http://www.guj.com.br/java.tutorial.artigo.108.1.guj

mestrekame

Olá ramilani12, obrigado por estar tentando ajudar.

Eu estou utlizando o netbeans, portanto inclui o driver jdbc ojdbc14.jar nas bibliotecas e depois inclui essa biblioteca no projeto. Da mesma forma que eu já havia feito com o mysql e hsqldb. Acho que posso estar utilizando o driver JDBC errado talvez, ou está faltando mais algum driver.

O

De novo (tem vários posts meus dando a mesma dica): precisa usar OCI? Se não sabe o que OCI nem use. Mude de

private final String DATABASE_URL = "jdbc:oracle:oci:@000.000.000.000:5560:teste";

para

private final String DATABASE_URL = "jdbc:oracle:thin:@000.000.000.000:5560:teste";
mestrekame

Fiz essas modificações mas agora está ocorrendo o seguinte erro :cry: :

Exception in thread "main" java.sql.SQLException: Exceção de E/S: Bad packet type
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at java.sql.DriverManager.getConnection(DriverManager.java:512)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at Main.Main.main(Main.java:36)
Java Result: 1
ramilani12

Isso pode te ajudar:

http://www.websina.com/bugzero/kb/oracle-connection.html

O

Tem certeza que o listener do Oracle está na porta 5560?
Pela documentação, a porta 5560 é por default para conexão do iSQLPlus:
http://download-east.oracle.com/docs/html/B10811_01/app_port.htm

Por default, a porta do listener do Oracle é 1521. Procure o DBA do seu banco de dados e confirme isto.

neohacker
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:" + user + "/"
	+ password + "@" + IP + ":" + port + ":" + db);

Basicamente é isso cara…
Legenda:
user: Usuário do DB
password: Senha do Usuário
IP: IP onde se localiza o servidor Oracle
port: Porta de conexão, normalmente a default é a 1521
db: Instância do seu DB, o nome que vc usa no SQLPlus

espero ter ajudado
:?:

mestrekame

Olá galera, consegui resolver o problema.
O problema estava na string de conexão mesmo.
Troquei oci por thin e troquei a porta para 1521

Muito obrigado a todos suas contribuições foram fundamentais para que eu resolvesse meu problema.
Abraço

Criado 29 de maio de 2007
Ultima resposta 30 de mai. de 2007
Respostas 8
Participantes 4