Problemas com conexao firebird (RESOLVIDO)

20 respostas
aguiarle

Estou tentando conectar um banco firebird no java e estou tomando um surra feia.

Qualquer ajuda será bem vinda. Vlw

Sistema
Netbeans ide 6.0.1
Java 1.6.0_01
winxp
Classpath= .;C:\firebird\jdbc2_0-stdext.jar;C:\firebird\lib\jaas.jar;C:\firebird\lib\log4j-core.jar;C:\firebird\lib\mini-concurrent.jar;C:\firebird\lib\mini-j2ee.jar

fonte:

import java.sql.*;
public class Conexao {

public static void main(String args[]) {
   
   
    System.out.println("#testando acesso a banco de dado Interbase\n\n");
    Connection conn = null;
    String teste = "SELECT NOME FROM DBCADCLI;";
    try
  {
     Class.forName("org.firebirdsql.jdbc.FBDriver");
      conn = DriverManager.getConnection( "jdbc:firebirdsql:192.168.96.3/3050:/home/bancos/lascasas/menfis.fdb", "SYSDBA", "masterkey");
     System.out.println("Sucesso na conexão! Massacre!\n");
     Statement stm = conn.createStatement();
     ResultSet rs = stm.executeQuery(teste);
     while (rs.next())
     {
        String linha = rs.getString("NOME");
        System.out.println("Cliente:" +linha);
     }
   
     System.out.println("select realizado\n");
  }
  catch(ClassNotFoundException e)
  {
                    System.out.println("excessao ClassNotFound...");
                    e.printStackTrace();
  }
  catch(SQLException e)
  {
                    System.out.println("SQL Exception... Erro dos Bravos");
                    e.printStackTrace();
  }
  finally
  {
     try
     {
        conn.close();
     }
     catch(SQLException onConClose)
     {
        System.out.println("error on closing");
        onConClose.printStackTrace();
     }
  }
}

erro :

java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver

at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at testefirebird.Conexao.main(Conexao.java:23)

20 Respostas

crpablo

Vc colocou o driver no class do windows?

Pq não coloca no netbeans?

aguiarle

Ja esta Tbm no class do netbeans e nada.

crpablo

Cara... dá uma olhada nessa minha connect...

Ela tá funcionando tranquilo...

// Cria e retorna uma nova conexão com o BD
	private Connection getConnection() {

		Connection conn = null;

		try {
			Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
			String url = "jdbc:firebirdsql:localhost/3050:C:/FIREBIRD/SEUBANCO.gdb";
			String user = "sysdba";
			String pass = "masterkey";
			conn = DriverManager
					.getConnection(url, user, pass);
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return conn;
	}

[]'s

aguiarle

deu o mesmo erro. mesmo assim obrigado.

crpablo

Cara,

Quais JARs vc add a lib?

Onde vc adicionou?

Não tinha testado minha connect no NB, aliás nem uso ele… mas fiz o teste aki e deu tudo certo…

aguiarle

As mesmas que estao no meu classpath. ja tentei colocar tbm a firebirdsql-full.jar, q pelo o q li, me parece q ela engloba uns 4 jars daquela lista, podendo retira-las.

crpablo

Você add o jar do firebird na lib do projeto ou do NB?

aguiarle

Nos 2

crpablo

Certo…

Deixa eu dar uma descrição do meu aqui…

Netbeans 5.5
JDK 1.6
Firebird 2.0
Driver Firebird: jaybird-full-2.1.1.jar

Configurado na lib do projeto somente…

Confere com os seus ae…

aguiarle

adicionei este driver q vc passou e ainda continua com o mesmo erro

aguiarle

vou t add no msn

crpablo

Não uso msn no trampo cara… soh em casa…

Mas se vc está usando como falei… deveria funcionar… pelo menos o meu funciona tranquilo… nunca tive problemas…

Eu uso o eclipse e configurei no NB só pra testar hj… e foi di boa!!!

Vc tem o eclipse instalado ae?

Se tiver tenta configurar nele… vai q teu NB tá com algum pau!!!

aguiarle

Tentei no eclipse e deu a mesma msg.

tentei na linha de comando e deu este erro.

Exception in thread main java.lang.NoClassDefFoundError: Conexao

testefirebird/Conexao)

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Sour

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$000(Unknown Source)

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Metho

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Sourc

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)
crpablo

Cara... Testou com o meu cód.?

Pega essa class e faz o teste... mais abaixo tem outra com o main pra testar...

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


/**
 * Classe que manipula as propriedades do BD bem como seus dados com os
 * seguintes métodos: getNomeTabelas() retorna os nomes das tabelas em um schema
 * específico no BD ou mesmo todas tabelas de todos schemas; getDadosTabelas()
 * retorna os dados das tabelas do BD; getNomeColunas() retorna os nomes das
 * colunas de uma tabela; getQuantidadeColunas() retorna quantas colunas uma
 * tabela possuí; getDatabaseMetaData() retorna um objeto DatabaseMetaData que
 * consulta propriedades da tabelaS
 */

public class TabelasBD_firebird {

	public DatabaseMetaData getDatabaseMetaData() {

		DatabaseMetaData dbmd = null;

		try {
			dbmd = getConnection().getMetaData();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return dbmd;
	}

	// Retorna uma lista com todas as tabelas do schema CIANET
	@SuppressWarnings("unchecked")
	public List getNomeTabelas() {

		ResultSet rsPegaTabelas = null;
		List listaTabelas = new ArrayList();

		try {
			rsPegaTabelas = getDatabaseMetaData().getTables(null, "CIANET",
					"%", null);

			while (rsPegaTabelas.next()) {
				listaTabelas.add(rsPegaTabelas.getObject(3));

			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return listaTabelas;
	}

	// Retorna uma lista com os dados das tabelas
	@SuppressWarnings("unchecked")
	public List getDadosTabelas(String nomeTabela) {

		PreparedStatement ps = null;
		ResultSet rsPegaDados = null;
		List listaDados = new ArrayList();
		
		
		try {
			ps = getConnection()
					.prepareStatement("SELECT * FROM " + nomeTabela);

			rsPegaDados = ps.executeQuery();

			int qntColunas = getQuantidadeColunas(nomeTabela);
			System.out.println("Nº Colunas atual: " + qntColunas);

			while (rsPegaDados.next()) {
				for (int j = 0; j < qntColunas; j++) {
					listaDados.add(rsPegaDados.getString(j + 1));
					System.out.println("Coluna " + (j + 1) + " "
							+ rsPegaDados.getString(j + 1) + " Tipo "
							+ rsPegaDados.getMetaData().getColumnLabel(j + 1));
				}
			}
			
			ps.close();
			getConnection().close();

		} catch (SQLException e) {
			e.printStackTrace();
		}
		// }
		return listaDados;
	}

	// Retorna uma lista com o nome de todas as colunas da tabela
	@SuppressWarnings("unchecked")
	public List getNomeColunas(String nomeTabela) {

		List nomeColunas = new ArrayList();
		Statement stmt;
		ResultSet rsNomeColunas = null;
		ResultSetMetaData rsmd = null;
		int qtdColunas;

		try {
			stmt = getConnection().createStatement();
			rsNomeColunas = stmt.executeQuery("SELECT * FROM " + nomeTabela);
			rsmd = rsNomeColunas.getMetaData();

			qtdColunas = rsmd.getColumnCount();

			for (int i = 0; i < qtdColunas; i++) {
				nomeColunas.add(rsmd.getColumnName(i + 1));
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.print("\n");
		return nomeColunas;
	}

	// Retorna a quantidade de colunas na tabela
	public int getQuantidadeColunas(String nomeTabela) {

		int quantidadeColunas = 0;

		try {

			quantidadeColunas = getResultSetMetaData(nomeTabela)
					.getColumnCount();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.print("\n");
		return quantidadeColunas;
	}

	// Retorna o ResultSetMetaData da tabela em questão, com ele é possível
	// obter propriedades da tabela
	public ResultSetMetaData getResultSetMetaData(String nomeTabela) {

		Statement stmt = null;
		ResultSet rsQtdColunas = null;
		ResultSetMetaData rsmd = null;

		try {
			stmt = getConnection().createStatement();
			rsQtdColunas = stmt.executeQuery("SELECT * FROM " + nomeTabela);
			rsmd = rsQtdColunas.getMetaData();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rsmd;
	}

	// Cria e retorna uma nova conexão com o BD
	private Connection getConnection() {

		Connection conn = null;

		try {
			Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
			String url = "jdbc:firebirdsql:localhost/3050:C:/*****SEUBD******";
			String user = "sysdba";
			String pass = "masterkey";
			conn = DriverManager
					.getConnection(url, user, pass);
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return conn;
	}
}
Para testar:
public class TabelasBD_Main {

	public static void main(String[] args) {

		String nomeTabela = "******SUATABELA******";

		TabelasBD_firebird tabelas = new TabelasBD_firebird();

		tabelas.getDadosTabelas(nomeTabela);
		System.out.println(tabelas.getNomeTabelas());
		System.out.println(tabelas.getNomeColunas(nomeTabela));
		System.out.println(tabelas.getQuantidadeColunas(nomeTabela));
		System.out.println(tabelas.getDadosTabelas(nomeTabela));

	}
}

Vamu lah!!!

aguiarle

deu o mesmo erro…

acredito q o erro nao esta no codigo, mas sim nos drivers…

eu peguei eles na net, mas nao sei, pode esta dando conflito de versoes.

crpablo

blz…

To enviando…

[]'s

aguiarle

nada mudou…
adicionei as sua libs e nada.
detonei os dois classpath para teste, o do windows e do nb e deu a mesma msg de erro

crpablo

hahaha… cara, tem algum centro de macumba ae por perto?.. mãe de santo, essas coisas?

Tá conseguindo acessar o bd via console?

deixa sem o driver no path do xp e configura só o do NB e Eclipse…

Os meus estão configurados conforme as img em anexo…




aguiarle

Funcionou!!!

Muito Obrigado pela ajuda.

Agora deixa eu te passar o ocorrido.

No NB q eu tenho, tem uma parte no menu ferramentas onde tem biblioteca.
Eu estava adicionando o arquivo ali, mas nao estava adicionando ao projeto.
Por isso ele nao reconhecia.
tem q ir na propriedade do projeto e adicionar a biblioteca ao projeto.

vlw

t+

crpablo

AMÉM!!!..hahahaha

Bom que chegamos a algum lugar…

Aproveita e coloca um RESOLVIDO lá no título do tópico…

[]'s

Criado 13 de fevereiro de 2008
Ultima resposta 13 de fev. de 2008
Respostas 20
Participantes 2