Conexão Firebird e Java (Via JDBC)

Java

09/04/2009

Já baixei vários drives JDBC (uns 5) baixei NetBeans 4.0 e 3.6 e dois BDs (MySQL e Firebird). Estou no momento com o Firebird, configurado e funcionando, inclusive na minha aplicação em JAVA, via ODBC, mas nos exemplos que vi aq em alguns tuto, a classe era definida pelo IP do servidor, mas desta forma eu nao consigo. Jeito que eu fiz.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url = "jdbc:odbc:SPZSYS";
Connection con = DriverManager.getConnection(url,"SYSDBA","123242");
Jeito que eu nao consigo fazer.
url = "jdbc:firebirdsql:127.0.0.1/3050:/java/projauto/bd/ProjAuto.fdb";
drive = "org.firebirdsql.jdbc.FBDriver";
Preciso muito da ajuda de vcs, pois não vejo mais soluções pra esse problema. :arrow: Alguém que tenha conseguido configurar e possa me ajudar, ou dar um dica que me ajude. Abraços pessoal, até mas... Rafael.
Rpizao

Rpizao

Curtidas 0

Respostas

Claudio Paranhos

Claudio Paranhos

09/04/2009

[quote="rpizao"]
url = "jdbc:firebirdsql:127.0.0.1/3050:/java/projauto/bd/ProjAuto.fdb";
drive = "org.firebirdsql.jdbc.FBDriver";
Preciso muito da ajuda de vcs, pois não vejo mais soluções pra esse problema. :arrow: Alguém que tenha conseguido configurar e possa me ajudar, ou dar um dica que me ajude. Rafael.
Qual é o erro que está dando ? Mas vamos lá, tente desta forma:
url = "jdbc:firebirdsql:127.0.0.1/3050:java/projauto/bd/ProjAuto.fdb";
drive = "org.firebirdsql.jdbc.FBDriver";
Sem a barra "/" antes do caminho para o banco.
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Cara, continua......o erro ocorre na definição Class.forName(drive); Da o seguinte erro:
java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver

Conto com a tua ajudai cara... Abraços. Rafael.
GOSTEI 0
Cybermix

Cybermix

09/04/2009

o .jar do driver tem que estar no seu classpath :!:
GOSTEI 0
Rpizao

Rpizao

09/04/2009

[quote="cybermix"]o .jar do driver tem que estar no seu classpath :!:
Como assim cara?!? Desculpa minha ignorancia... :cry: :wink: Por via das dúvidas coloquei em dois locais, no classpath do meu projeto (C:\PROJETOS_JAVA) e no jdk (C:\j2sdk...\bin). Continua o problema... Cara, se tu puder me ajudar, to achando q eu nao estou com drive certo, me manda o drive ou diz ond posso baixa-lo, um q tu saiba q funcione, e ai sigo os mesmos passos q vc usou. Valeu cara, to no teu aguardo ai. Abraços. Rafael. :!:
GOSTEI 0
Kuesley

Kuesley

09/04/2009

Caindo de para-quedas, meu baixe este aki: http://www.atimonet.com.br/kuesley/JavaFree/firebirdsql-full.jar Esse funciona posso te garantir ! hehehe Se tu nao conseguir fala que passamos o caminha das pedras... :o :o
GOSTEI 0
Rpizao

Rpizao

09/04/2009

To enrolado mano.... :x Como eu identifico onde é meu classpath? Já coloquei na pasta onde estão os .class, na pasta do banco e nada... Continua dando o mesmo erro... :cry: :cry: :cry: :cry: :cry: :cry: To quase desistindo cara.....vou fazer enfermagem... :arrow:
GOSTEI 0
Cybermix

Cybermix

09/04/2009

duas maneiras de executar os jars uma delas é ir no prompt e digitar java -cp arquivo.jar;. Programa.java outra maneira é: dentro do arquivos de programas tem a pasta JAVA e dentro dela tem a pasta jre/lib/ext coloque seu .jar la :!:
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Eu to usando jdk 1.4, fui lá no diretório dentro dele (jre/lib) e colei o firebirdsql-full.jar, cedido ai pelo kuesley. E agora peixe?! Qual o procedimento....tentei executar via comando e e deu esse erro.
Exception in thread "main" NoClassDefFoundError: Endereço_Que_eu_dei
Eu tenho que executa-lo dentro dessa pasta? Valeu pessoal pela ajuda e conto com vcs. Abraços... Rafael.
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

[quote="rpizao"]Eu to usando jdk 1.4, fui lá no diretório dentro dele (jre/lib) e colei o firebirdsql-full.jar, cedido ai pelo kuesley. E agora peixe?! Qual o procedimento....tentei executar via comando e e deu esse erro.
Exception in thread "main" NoClassDefFoundError: Endereço_Que_eu_dei
Eu tenho que executa-lo dentro dessa pasta? Valeu pessoal pela ajuda e conto com vcs. Abraços... Rafael.
Cara, passei pela mesma situação que vc, então eu sei o que é isso. Então vamos lá, desde o início, passo a passo. Primeiro vc deve baixar o driver jdbc para o firebird: - FirebirdSQL-1.5.0RC2JDK_1.4 - que pode ser encontrado em: [url]http://www.firebird.com.br/download.php?file=5[/url] Então vc deve descompactar o arquivo que baixou e sugiro que vc crie uma pasta no raiz, não sei qual o seu SO, mas por exemplo no Windows: c:\drivers e copie para lá os seguintes jars, que estão lá no arquivo que vc descompactou: - firebirdsql.jar - jaas.jar - log4j-core.jar - mini-concurrent.jar - mini-j2ee Depois vc deve incluir estes 5 arquivos na sua classpath. Mas, para tanto depende do SO que vc esta usando: No Win 98 e 2000 basta vc editar o autoexec.bat Já no XP vc tem que acessar as propriedades do "meu computador", e na aba "avançado" clicar em variáveis de ambiente e lá incluir os drivers. Ah, leia os tutoriais e alguns tópicos aqui do forum, acho que irá te ajudar. [url]http://www.javafree.com.br/forum/viewtopic.php?t=1359[/url] [url]http://www.javafree.com.br/forum/viewtopic.php?t=9205[/url] Qualquer problema, poste aqui.
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Falai cara, po vi lá......passou um sufoco pra conseguir..... To usando o Win98 peixe, tentei definir o class path direto no autoexec, mas quando rodo da a mensagem de "erro de syntax". Tai como estou fazendo.
SET CLASSPATH: %CLASSPATH%;.; C:\j2sdk1.4.2_04\bin; C:\j2sdk1.4.2_04\jre\bin; C:\Drivers\firebirdsql.jar; C:\database\;.
Valeu cara pela ajuda e conto contigo ai pra conseguir... Abraços... Rafael
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

[quote="rpizao"]Falai cara, po vi lá......passou um sufoco pra conseguir..... To usando o Win98 peixe, tentei definir o class path direto no autoexec, mas quando rodo da a mensagem de "erro de syntax". Tai como estou fazendo.
SET CLASSPATH: %CLASSPATH%;.; C:\j2sdk1.4.2_04\bin; C:\j2sdk1.4.2_04\jre\bin; C:\Drivers\firebirdsql.jar; C:\database\;.
Valeu cara pela ajuda e conto contigo ai pra conseguir... Abraços... Rafael
tente assim:
set classpath=.;C:\j2sdk1.4.2_04\bin;C:\j2sdk1.4.2_04\jre\bin;C:\Drivers\firebirdsql.jar;
1 - vc deve colocar "=" depois do set classpath e não ":" 2 - Deve incluir o ".", pois significa o diretório corrente 3 - Não deixe espaço em branco. 4 - Não precisa "%CLASSPATH%", pois é utilizado apenas quando editamos a variável através de linha de comando 5 - Não precisa colocar "." (ponto) no início e no final 6 - Não esqueça de incluir os outros .jars (jaas.jar, log4j-core.jar, mini-concurrent.jar, mini-j2ee) Olha a minha classpath como está:
set classpath=.;c:/j2sdk1.4.2_05/lib/tools.jar;c:/j2sdk1.4.2_05/lib/dt.jar;
c:/j2sdk1.4.2_05/lib/htmlconverter.jar;c:/j2sdk1.4.2_05/jre/lib;
c:/j2sdk1.4.2_05/jre/lib/rt.jar;c:/j2sdk1.4.2_05/jre/lib/ext/pgjdbc2.jar;
c:/j2sdk1.4.2_05/lib/firebirdsql.jar;c:/j2sdk1.4.2_05/lib/jaas.jar;
c:/j2sdk1.4.2_05/lib/log4j-core.jar;
c:/j2sdk1.4.2_05/lib/mini-concurrent.jar;
c:/j2sdk1.4.2_05/lib/mini-j2ee.jar;c:/j2sdk1.4.2_05/lib/jdbc2_0-stdext;
Qualquer problema é só postar. :!:
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Cara, só uma dúvida minha. Essa parte do código significa o que velho?
c:/j2sdk1.4.2_05/lib/tools.jar;c:/j2sdk1.4.2_05/lib/dt.jar; 
c:/j2sdk1.4.2_05/lib/htmlconverter.jar;c:/j2sdk1.4.2_05/jre/lib; 
c:/j2sdk1.4.2_05/jre/lib/rt.jar;c:/j2sdk1.4.2_05/jre/lib/ext/pgjdbc2.jar;
Tb tenho que fazer referência a estes arquivos? Dessa forma q vc me passou funcionou o classpath, mas o erro na conexão do banco continua. Do jeito que eu fiz.
set classpath=.;C:\j2sdk1.4.2_04\bin;C:\j2sdk1.4.2_04\jre\bin;C:\Drivers\firebirdsql.jar;C:\Drivers\jaas.jar;C:\Drivers\log4j-core.jar;C:\Drivers\mini-concurrent.jar;C:\Drivers\mini-j2ee.jar;
Valeu cara, obrigado pela ajuda. Rafael. :!:
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

Cara, só uma dúvida minha. Essa parte do código significa o que velho? Código: c:/j2sdk1.4.2_05/lib/tools.jar;c:/j2sdk1.4.2_05/lib/dt.jar; c:/j2sdk1.4.2_05/lib/htmlconverter.jar;c:/j2sdk1.4.2_05/jre/lib; c:/j2sdk1.4.2_05/jre/lib/rt.jar;c:/j2sdk1.4.2_05/jre/lib/ext/pgjdbc2.jar;
O único arquivo que deve estar na sua classpath é o tools.jar. Os outros estavam lá pois quando eu estava lendo a respeito de variáveis de ambiente acabei incluindo e esqueci de excluir.
Dessa forma q vc me passou funcionou o classpath, mas o erro na conexão do banco continua. Do jeito que eu fiz. Código: set classpath=.;C:\j2sdk1.4.2_04\bin;C:\j2sdk1.4.2_04\jre\bin;C:\Drivers\firebirdsql.jar;C:\Drivers\jaas.jar;C:\Drivers\log4j-core.jar;C:\Drivers\mini-concurrent.jar;C:\Drivers\mini-j2ee.jar;
Realmente eu tentei dessa forma e minha apliacação também não conseguiu achar o driver. faça o seguinte. Copie os 5 arquivos referentes ao firebird para dentro da pasta - c:\j2sdk1.4.2_04\lib E ao invés de incluir "C:\Drivers\firebirdsql.jar" na classpath, inclua c:\j2sdk1.4.2_04\lib\firebirdsql.jar. Faça isso para os 5 arquivos.
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Cara, infelismente, nada... Meu Autoexec ta assim....
set classpath=.;C:\j2sdk1.4.2_04\lib\firebirdsql.jar;C:\j2sdk1.4.2_04\lib\jaas.jar;C:\j2sdk1.4.2_04\lib\log4j-core.jar;C:\j2sdk1.4.2_04\lib\mini-concurrent.jar;C:\j2sdk1.4.2_04\lib\mini-j2ee.jar;
Quando eu incluo o tools.jar ele da a msg "Sem espaço de ambiente". Po bicho, ta sinistro...não to conseguindo nem a pau.... :x
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

Po bicho, ta sinistro...não to conseguindo nem a pau....
Cara, acho que vc viu que eu também tomei uma surra até conseguir. Demorei uns 10 dias. Só uma pergunta, depois de alterar a classpath (autoexec.bat) você está reiniciando sua máquina né ? Pois caso contrário não vai ter efeito nenhum. Faça o seguinte reinicie sua máquina e no prompt do DOS digite "set" e poste aqui o resultado do comando para que eu possa analisar.
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Po cara, eu vi...tu teve muita força de vontade...espero tb ter sucesso no fim... Cara, eu executei o .bat....isso só nao adiantaria não?! Mas, enfim, como vc indicou reiniciei e nada... No comando SET, aparece todo classpath que eu defini e algumas outras coisas... Será algum erro no meu código mano?! Olha ele ai...
import java.sql.*;
import javax.swing.*;


public class conectBD
{
public conectBD()
{
try
{  
Class.forName("org.firebirdsql.jdbc.FBDriver");
String url = "jdbc:firebirdsql:127.0.0.1/3050:database/Spz_bd.gdb";
Connection con = DriverManager.getConnection(url,"SYSDBA","123242");
Statement st = con.createStatement(); 
String s = "SELECT * FROM testeBD";
ResultSet rs = st.executeQuery(s);
while (rs.next())
{
JOptionPane.showMessageDialog(null, rs.getString(1) + "-" + rs.getString(2));
}
 con.close();
}
catch(Exception e)
{
System.out.println(e);
System.exit(0);
}
}
	
	public static void main(String args[])
	{
	conectBD obj = new conectBD();
	}
}
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

O código está correto. Se o erro ainda é o mesmo, ou seja, java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver significa que o driver não foi encontrado. Como está sua classpath agora ? Eu acesso ao banco da seguinte forma: criei uma classe de conexão chamada connection factory, que acessa um properties para pegar os dados referentes ao banco e ao driver. Aqui está o código da minha classe de conexão:
import java.util.*;
import java.io.*;
import java.sql.*;
public class ConnectionFactory
{
	protected Properties conProp;
	public ConnectionFactory(File config) throws IOException
	{
	     FileInputStream input = new FileInputStream(config);
	     conProp = new Properties();
	     conProp.load(input);
	     input.close();
	}
	public Connection getConnection() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException
	{
	     String dri = conProp.getProperty("driver");
	     Class.forName(dri).newInstance();
	     String ur = conProp.getProperty("url");
	     String us = conProp.getProperty("user");
	     String pa = conProp.getProperty("password");
	     Connection c = DriverManager.getConnection(ur,us,pa);
	     return c;
	}
}
O meu properties está assim:
driver   = org.firebirdsql.jdbc.FBDriver
url      = jdbc:firebirdsql:192.168.2.33/3050:d:Mid/Db/Mid.fdb
user     = SYSDBA
password = masterkey
A minha classpath está assim:
set classpath=.;c:/j2sdk1.4.2_05/lib/tools.jar;
c:/j2sdk1.4.2_05/jre/lib/ext/pgjdbc2.jar;c:\j2sdk1.4.2_05\lib\firebirdsql.jar;c:\j2sdk1.4.2_05\lib\jaas.jar;
c:\j2sdk1.4.2_05\lib\log4j-core.jar;
c:\j2sdk1.4.2_05\lib\mini-concurrent.jar;
c:\j2sdk1.4.2_05\lib\mini-j2ee.jar;c:\j2sdk1.4.2_05\lib\jdbc2_0-stdext;
E os meus drivers (jdbc para o fire), como vc pode ver na classpath, estão na seguinte pasta:
C:\j2sdk1.4.2_05\lib
Dê uma olhada e verifique se não tem nada de diferente. :!:
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Cara, desculpai não ter respondido antes, to enrolado aq no trabalho...valeu mesmo pela sua ajuda, pela paciência. No .bat tirando o tools.jar, pgjdbc2.jar e jdbc2_0-stdext o resto está igual. Mudei todo meu fonte, adaptando igual ao seu e o erro agora é:
java.lang.NullPointerException
Valeu cara....tomara q apartir dai de td certo.... Abraços. Rafael. :!:
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

Posta o código aqui
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Desculpai o plágio velho......conseguindo fazer funcionar vou dar uma modificada. Tai ele.
import java.util.*; 
import java.io.*; 
import java.sql.*;
import javax.swing.*;

public class ConnectionFactory 
{ 
   protected Properties conProp;
   public ConnectionFactory()
   {
   		
   }
   public ConnectionFactory(File config) throws IOException 
   { 
        FileInputStream input = new FileInputStream(config); 
        conProp = new Properties(); 
        conProp.load(input); 
        input.close(); 
   } 
   public Connection getConnection() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException 
   { 
        String dri = conProp.getProperty("org.firebirdsql.jdbc.FBDriver"); 
        Class.forName(dri).newInstance(); 
        String ur = conProp.getProperty("jdbc:firebirdsql:127.0.0.1/3050:c:database/Spz_bd.gdb"); 
        String us = conProp.getProperty("SYSDBA"); 
        String pa = conProp.getProperty("123242"); 
        Connection c = DriverManager.getConnection(ur,us,pa); 
        return c; 
   }
   
   public static void main(String args[])
   {
   		ConnectionFactory obj = new ConnectionFactory();
   		try
   		{
   			Connection conn = obj.getConnection();
   			Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM testeBD");
            while (rs.next())
           	{
            	JOptionPane.showMessageDialog(null, rs.getString(1) + "-" + rs.getString(2)); 
           	}
            //Fechando a conexão: 
            conn.close();
   		}
   		catch(Exception exc)
   		{
   			JOptionPane.showMessageDialog(null,"Exceção gerada: "+exc);
   		}
   }
} 
Valeu parcero...
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

Cara, primeiro tente entender o que a minha classe está fazendo. :oops: vc sobreescreveu o construtor ConnectionFactory(), desta forma:
 public ConnectionFactory()
repare que na assinatura do método original, ele está recebendo um arquivo:
 public ConnectionFactory(File config) throws IOException
E como vc não passa nenhum parametro ele executa o seu método construtor, que por sinal não está implementado, então vc não obtem a conexão. :?: Caso vc queira usar a ConnectionFactory que eu te passei, vc terá que editar um properties e lá definir o driver, url, usuário e senha e quando chamar a classe vc terá que passar como parâmetro o arquivo properties editado(inclusive o caminho) e depois pegar a conexão através do método getConnection(). Veja como eu instancio a classe:
ConnectionFactory factory = new ConnectionFactory(new File("../DB/Mid.properties"));
Connection c = factory.getConnection();
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Cara, o que eu tentei era exatamente isso, sobrescrever o método construtor, quando na verdade poderia somente comentar seu construtor...isso pq nao tinha percebido a importância dele, aliás cara, ainda não percebi.... Que arquivo é esse? Vc gera ele direto do banco? Qual conteúdo vc quarda nesse arquivo cara? Valeu parcero... :!:
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

É um arquivo de propriedades. vc pode edita-lo até com o bloco de notas. exemplo: driver = org.firebirdsql.jdbc.FBDriver user = SYSDBA salve o arquivo como <nomedoarquivo.properties>. Como funciona ? vc vai utilizar a classe properties() para manipular o arquivo e pegar os parametros setados no mesmo. Estude esta classe, para maiores detalhes. [url]http://java.sun.com/j2se/1.4.2/docs/api/[/url]
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Tentei usar uma conexão direto do NetBeans e o erro foi esse ai, parece ser o mesmo. Quando peço, lá para localizar o driver jdbc ele encontra sem problema puxando do arquivo firebirdsql.jar e mostra até como configurar, mas erro persiste. Tai ele
Annotation: Exception occurred in Request Processor
java.lang.NoClassDefFoundError: javax/resource/ResourceException
	at org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:147)
	at org.netbeans.modules.db.explorer.DatabaseConnection$1.run(DatabaseConnection.java:340)
	at org.openide.util.Task.run(Task.java:136)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:330)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:686)
Valeu cara, até... Rafael.
GOSTEI 0
Claudio Paranhos

Claudio Paranhos

09/04/2009

voce já registrou os 5 drivers do firebird no Netbeans ?
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Retorno esse erro ai, eu já tinha colocado todos os .jars q veio no driver agora coloquei só os 5 que vc me falou.
Unable to add conection, cannot establish a connection to jdbc:firebirdsql:127.0.0.1/3050:c:database/Spz_bd.gdb using org.firebirdsql.jdbc.FBDriver(Resource Exception. Unable to complete network request to host "127.0.0.1".
Reason: Unable to complete network request to host "127.0.0.1".)
PS: Tem um botão que testa o driver pra ve se está ok, e deu td certo nesse teste. Valeu... :!: Rafael.
GOSTEI 0
Rpizao

Rpizao

09/04/2009

Cara......nem sei como te agradecer velho..... Maldito editor manual que nao me deixa-va conectar, usando o NetBeans consegui na boa... Cara, valeu muito ai pela idéias, pelos toques e pela paciência velho. Precisando cupadi, estamosai. Abração meu mano. Até mas. :!: :!: :!: :!: Rafael.
GOSTEI 0
POSTAR