GoJava - A comunidade java de Goiás
 
Enviado por ivrj em seg, 02/22/2010 - 23:58.

Pessoal, estou tentando desenvolver uma aplicação desktop com um banco de dados local e com servidor embarcado, para que a aplicação não necessite de um servidor instalado na maquina local ou em uma maquina remota remota.

Consegui fazer com derby, mas com firebird não está funcionando.

Segue abaixo a classe de testes que fiz. Usando o servidor instalado em minha maquina (servidor Firebird 2.1.3) funcionou legal, mas ao usar o embedded não consegui roda-lo!


package Firebird2;

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

public class Conexao {

public Connection con = null;
public Statement stm = null;

public Conexao() {

try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
/* usando o banco de dados pelo firebird instalado na maquina que executa a
* aplicação a consulta funciona normalmente, conforme foi feito na linha abaixo
*/
//con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:/bd/tbl_cadastro.fdb","sysdba","masterkey");

/* com o firebird embarcado, usado na linha abaixo, não funciona de forma alguma, retornando o erro
* Failed to initilize Jaybird native library. This is most likley due to a failure to load the firebird client library
*/
con = DriverManager.getConnection("jdbc:firebirdsql:embedded:C:/bd/tbl_cadastro.fdb","sysdba","masterkey");
stm = con.createStatement();
System.out.println("conectado");

} catch (Exception e) {
System.out.println("Não foi possível conectar ao banco: " + e.getMessage());

}

}

//main criado apenas para testes
public static void main(String[] args) {

Conexao conexao = new Conexao();
try {

Statement smt = conexao.con.createStatement() ;
ResultSet rs = smt.executeQuery("SELECT * FROM TBL_CADASTRO ");
Integer count = 0;
while ( rs.next() )
{
count++;
System.out.println(rs.getString("CD_NOME") + " --- " + rs.getString("CD_CAIXA") + " --- " + rs.getString("CD_CODIGO"));
}
System.out.println("Registros encontrados: " + count);
rs.close();
conexao.con.close();
} catch (SQLException ex) {

ex.printStackTrace();
}
}
}

Ele apresenta erro ao tentar criar a conexão apresentando esta mensagem:
Failed to initilize Jaybird native library. This is most likley due to a failure to load the firebird client library

Para facilitar caso alguém queira testar o código, segue o arquivo do banco de dados: http://www.mediafire.com/?yiwtnezydyy

As minhas principais duvidas são:

=> Onde devo colocar os arquivos do firebird embedded?
Eu coloquei na mesma pasta onde está a tabela .fdb
=> Devo usar o jaybird? Em qual pasta devo coloca-lo? Tentei coloca-lo como biblioteca jar pelo netbeans, mas resultou no erro! Usei a versão 2.1.5

Agradeço qualquer ajuda!

»

itAald

eBqDDvo itAald

»

J2SE + Firebird Embedded

Ola,

não sei nada a respeito do funcionamento do firebir embedded mas vou dar meu palpite.
A respeito da localização do arquivo, acredito que seria vom estar dentro do próprio projeto para faciliar a destribuição.

respondendo a sua segunda pergunta:

segundo as docs do JayBird, as classes do firebirdsql.jar devem estar no classpath assim como as seguintes libs:

*mini-concurrent.jar
*jaas.jar (included in jdk 1.4)
*mini-j2ee.jar (now including JDBC classes)
*log4j-core.jar (if you want logging available)

fonte: http://www.firebirdsql.org/index.php?op=devel&sub=jdbc&id=faq#4

Atenciosamente,
Filipe Portes
Arquiteto de Software - Desenvolvedor Senior Java EE/Web/Flex
omeuefilipe@gmail.com

»

Comentários recentes

Divulgar

Conteúdo sindicalizado