Conexão Banco Firebird (Jaybird)

3 respostas
R

Amigos,
Acabo de instalar o J2SE 5.0 - e o Jaybird (Con o classPath todo configurado)

Mas não estou conseguindo conectar com o banco de dados, ao compilar o cógido esta aparecendo a seguinte mensagem:

--------------------Configuration: --------------------
Note: C:\Java\ApJava.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Java\ApJava.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Process completed.

E não conecta no banco de daddos, segue o código:

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.<em>;

import java.sql.</em>;

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 ); 
       } 
    } 
 );

}
}

3 Respostas

C

Cara,

É difícil ler um código, ainda mais desse tamanho, que não esteja dentro de uma tag code:

TAG CODE

Tenta usar please.

D

Quanto aos dois primeiros warnings:
Note: C:\Java\ApJava.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Vc está usando algum método/construtor depreciado. Da uma olhada na linha que está ocorrendo isso, veja a documentação e troque pelos métodos que devem ser utilizados. Na documentação ele mostra o q deve ser usando. Exemplo “clássico”: método show().

Note: C:\Java\ApJava.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Vc ta usando alguma classe que possui um construtor genérico, exemplo classes do collections framework (ArrayList e afins). Dei uma olhada no seu código q ta uma bagunça pq vc num usou a tag code (como o Cocota disse) e sue problema se encontra na classe Vector. Tenta assim

Vector< TipoDeDadoDoSeuVector > seuVector = new Vector< TtipoDeDadoDoSeuVecvtor >

Não se assuste, a sintaxe é assim mesmo, só altere TipoDeDadoDoSeuVector pela classe que representa o tipo de dado que o Vector vai armazenar.

Quanto ao problema de não conectar talvez seja a sua String da url que esteja mal formatada, tenta assim:
jdbc:firebirdsql:localhost:c:/Java/ApJava.gdb
Num precisa da porta c vc ta usando a porta padrao (3050)

E como vc ta usando o Interbase e o JayBird para conectar, vc vai ter problemas na conexao como eu tava tendo e demorei um tempao para resolver. Entra no site do Firebird e baixa o driver JDBC 1.5, o 2.0 (JayBird) da pau na hora de conectar no Interbase 6.0

E para nao esquecer, com o info_god disse, posta todos os erros junto com o código para ficar mais fácil de decifrar.

Falow! Num esquece das estrelinhas hehehehehehe

I

Posta a msg de erro…

Criado 15 de agosto de 2006
Ultima resposta 15 de ago. de 2006
Respostas 3
Participantes 4