Por favor? Interbase Java

14 respostas
R

Estou utilizando o windows xp e interbase 6.

Eu utilizei um tutorial que se encontro na site www.firebase.com.br e não estou conseguindo conectar o banco ao java.

meu classpath esta assim:

C:\Program Files\InterBase Corp\InterClient\interclient.jar;

e o meu fonte assim:

public class BancoDados

{

private static  Connection  conexao;

private static  String url  = jdbc:interbase://127.0.0.1/C:/banco/detec/detec.gdb”;

private static  String usr  = SYSDBA;

private static  String pwd = masterkey;

private static  String drv  = interbase.interclient.Driver;
public static int  abreBanco ()

{

try {

if ((conexao != null)

&& (!conexao.isClosed())){

return 0;

}
Class.forName(drv);
        conexao = DriverManager.getConnection(url,usr,pwd);
                  
        return 0;
    }
    catch(ClassNotFoundException ex) {
        mostraMensagem("Erro "+ ex.getMessage() );
        return -1;
    }
    catch(SQLException ex) {
        mostraMensagem(ex.getMessage());
        return -1;
    }

}

}

o erro que esta ocorrendo é este:
interbase.interclient.Driver.

O que esta errado ???

muito Obrigado

Rafael Ferreira

14 Respostas

M

vc instalou o service pack 2 do windows? eu tbm tive problemas tentando usar o interbase no win xp, mas com o SP2, dai eu instalei o firebird e achei muito bom, sem ter que copiar esse driver a mais q o interbase pede.

R

Estou com o xp sp2. E inerbase 6. Mas vc diz se eu colocar o drive do fire bird ele ira funcionar?

M

o interbase nao sei se vai funcionar, mas instala o BD firebird mesmo, que é ate melhor que o interbase 6. Se vc ta acostumado a usar o ib console pra administrar o banco vc pode usar o IBOconsole que é praticamente igual, só que é feito pro firebird. Eu troquei e nao me arrependo.

R

Eu só instalo o firebird e o drive para o firebird/ java, FirebirdSQL-1.0.0?
e adiciono o class path para o diretorio do drive do firebird?
è isso?

M

é, vc adiciona o drive no class path, como eu utilizo o drive jaybird no meu caso ta assim meu CLASSPATH … “.;c:\j2sdk1.4.2_04\lib\tools.jar;c:\FirebirdSQL-1.5.5JDK_1.4\firebirdsql-full.jar”

R

Poderia me enviar um codigo fonte como exemplo?

M
esse codigo é o mesmo do artigo "Conectando o IB atraves de JDBC " da hp www.firebase.com.br, apenas alterado pra ser usado com o firebird
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;

public class ApJava extends JFrame {
 private Connection conApJava;  // Conexão que será criada com o banco
 private JTable vTabela; 	  // Tabela onde os registros serão inseridos
 private JMenuBar barPrincipal; // Menu da aplicação
 private JMenu mnuOpcoes;
 private JMenuItem itens;

 public ApJava()
 {
   componentes();
  // sUrl especifica o banco de dados ao qual o programa se conecta, usando JDBC
  // para conectar um banco de dados Interbase
  String sUrl = "jdbc:firebirdsql:localhost/3050:c:/Java/ApJava.gdb";
  String vUsuario = "SYSDBA";
  String vSenha = "masterkey";

  // Carrega o Driver JDBC e abre a conexão com o banco
  try{
   Class.forName("org.firebirdsql.jdbc.FBDriver"); 
   conApJava = DriverManager.getConnection(sUrl, vUsuario, vSenha);
  }
   catch(ClassNotFoundException cnfex){ // Excessões geradas
	String Msg = "Impossível carregar o seguinte driver JDBC: " + cnfex.getMessage() + "\nSe o mesmo estiver instalado favor verificar a variável de ambiente CLASSPATH\n\n";
      String Titulo = " Erro ao carregar Driver JDBC";

	// cnfex.getMessage() => retorna interbase.interclient.Driver
	JOptionPane.showMessageDialog(null, Msg , Titulo, JOptionPane.WARNING_MESSAGE);
      System.exit(1); // termina o programa
  }
  catch(SQLException sqlex){
	String Msg = "Não foi possível conectar o banco de dados ...";
      String Titulo = " Erro ao tentar conectar base de dados !";

	JOptionPane.showMessageDialog(null, Msg , Titulo, JOptionPane.WARNING_MESSAGE);
      sqlex.printStackTrace();
  }
   getTable();
   resize(500, 300);
   setLocation(50, 50);
   show();

 }

 public void componentes(){ // Contrói a interface da aplicação{ Menu }

    JMenuBar mnubarJavaxe;
    JMenu mnuArquivo, mnuAjuda, AjuJavaxe;
    JMenuItem ArqFechar;
    JMenuItem  AjuSobre;

    mnubarJavaxe = new JMenuBar(); // Adcionando a barra de menus
    setJMenuBar(mnubarJavaxe);

	// Menu Arquivo
    mnuArquivo = new JMenu("Arquivo", true); // Criando o menu
    mnuArquivo.setMnemonic('v');
    mnubarJavaxe.add(mnuArquivo);

    ArqFechar = new JMenuItem("Fechar");
    ArqFechar.setMnemonic('F');
    ArqFechar.addActionListener(
     new ActionListener(){
       public void actionPerformed( ActionEvent e){
	  System.exit(0);
       }
     }
    );
    mnuArquivo.add(ArqFechar);

	// Menu Ajuda
    mnuAjuda = new JMenu("Ajuda");
    mnuAjuda.setMnemonic('d');
    mnubarJavaxe.add(mnuAjuda);

    AjuSobre = new JMenuItem("Sobre Javaxe InterBase Access");
    AjuSobre.setMnemonic('S');
    AjuSobre.addActionListener(
     new ActionListener(){
       public void actionPerformed( ActionEvent e){
	   
       }
     }
    );
    mnuAjuda.add(AjuSobre);
  }

  private void getTable(){
    Statement smtp;
    ResultSet consApJava;

    try{ // Gera a Query para o banco
      String consulta = "SELECT * FROM TBLDADOS";

      smtp = conApJava.createStatement();
      consApJava = smtp.executeQuery(consulta);
      PrintQuery(consApJava);
      smtp.close();
    }
    catch (SQLException sqlex){ // Erro ao executar a Query no banco
      sqlex.printStackTrace();
    }
  }

  private void PrintQuery(ResultSet rs) throws SQLException{
    // posiciona-se no primeiro registro
    boolean registro = rs.next();

    // Se não houver registros exibe mensagem
    if (!registro){
      JOptionPane.showMessageDialog(null, "Consulta não retornou nenhum valor" , " Registro vazio", JOptionPane.WARNING_MESSAGE);
      return;
    }

    setTitle("Javaxe Interbase Access 1.08, Copyright Javaxe ®");
    Vector colunas = new Vector();
    Vector linhas = new Vector();

    try{
      // Obtém a estrutura da tabela do banco, que será adcionado a tabela
      ResultSetMetaData rsmd = rs.getMetaData();

      for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
        colunas.addElement( rsmd.getColumnName(i) );

      // Obtém dados da linha
      do{
        linhas.addElement(getNextRow(rs,rsmd));
      } while (rs.next());

      // Cria tabela e exibe o conteúdo do ResultSet
      vTabela = new JTable(linhas, colunas);
      JScrollPane scroller = new JScrollPane(vTabela);
      getContentPane().add(
        scroller, BorderLayout.CENTER
      );
      validate();
    }
    catch(SQLException sqlex){
      sqlex.printStackTrace();
    }
  }

  private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd) throws SQLException{
    Vector curLinha = new Vector();

    for ( int i = 1; i <= rsmd.getColumnCount(); ++i)
      switch (rsmd.getColumnType(i)){
        case Types.VARCHAR:
          curLinha.addElement(rs.getString(i));
          break;
        case Types.INTEGER:
          curLinha.addElement(new Long(rs.getLong(i)));
          break;
        default:
          System.out.println("Tipo era: " + rsmd.getColumnTypeName(i));
      }
     return curLinha;
  }

  public void shutDown(){
    try{ // Fecha a conexão co o banco de dados
      conApJava.close();
    }
    catch(SQLException sqlex){ // Não foi possível fechar a conexão
      System.err.println("Erro ao fechar conexão com o banco...");
      sqlex.printStackTrace();
    }
  }

  public static void main( String args[] )
  {
     final ApJava app = new ApJava();

     app.addWindowListener(
        new WindowAdapter() {
           public void windowClosing( WindowEvent e )
           {
   	       app.shutDown();
              System.exit( 0 );
           }
        }
     );
  }
}
O BD deve ter o nome ApJava e ser colocado na pasta com nome "Java" O banco deve ter a tabela TBLDADOS
CREATE TABLE TBLDADOS(
   NOME VARCHAR(50),
   PAG VARCHAR(50),
   EMAIL VARCHAR(50),
   ENDERECO VARCHAR(50)
);

é isso ai!! :grin:

R

Muito obrigado mesmo!!!
Vou testa!!
Valeu mesmo pela tua atenção

R

Cara , não tem como!!
Sempre cai no try Catch(ClassNotFoundException )

org.firebirdsql.jdbc.FBDriver ele não acha o drive.

Será que influi a versão do java?
Estou com a versão jdk1.3.1.
Ja alterei o Classpah de tudo que é forma mas não tem como.
O jeito é troca de banco de dados!!!

M

Vc ta importando o drive pra dentro do projeto? Se voce ta usando o eclipse faz assim… Project - Properties - Java Bild Path - Libraries - Add external JAR e adiciona a seu drive, no meu caso é firebirdsql-full.jar. No stress, vamos fazer esse banco funcionar sim, nem q ele nao queira! :lol:

C

iae pessoal blza?
por favor me ajudem
na linha abaixo, o q faz o metodo getNexRow(rs, rsmd)??? :tiros:

linhas.addElement(getNextRow(rs,rsmd));

valeu

M

“C3pO”:
iae pessoal blza?
por favor me ajudem
na linha abaixo, o q faz o metodo getNexRow(rs, rsmd)??? :tiros:

linhas.addElement(getNextRow(rs,rsmd));

valeu


o metodo getNextRow retorna um Vector contendo dados de uma linha do ResultSet, o rs.next() move o cursor do ResultSet para o proximo registro.

R

maluquo1 muito obrigado deu certo!!!
valeu mesmo!!
Tem um esquema no JDeveloper que tu pode adicionar tb um .jar. Fiz e funcionou muito bem.

Obrigado!!! :wink:

B

Oi!
Gostei do tópico porque é exatamente o erro que tenho pra conectar o Firebird!
O erro que está dando no momento que chama a conexão é:

Já setei a variável classpath e como estou usando o jbuilder, tentei colocar nas libraries o driver, melhorou mas não deu certo!

Então se puderem me ajudar eu agradeço! (jdk 1.4 e FirebirdSQL-1.5.5JDK_1.4)!!!

Abraços!

Criado 28 de janeiro de 2005
Ultima resposta 4 de jul. de 2005
Respostas 14
Participantes 4