Você está aqui: Java ::: Java + Firebird/Interbase ::: Metadados da Base de Dados (Database Metadata) |
Como retornar os tipos de dados suportados pelo Firebird e seus correspondentes JDBCQuantidade de visualizações: 7522 vezes |
Em algumas situações precisamos obter os tipos de dados suportados pelo Firebird e mapeá-los para seus correspondentes JDBC. Esta não é uma tarefa fácil, mas que, com uma pequena ajuda dos recursos de reflexão do Java, pode ser realizada depois de algumas xícaras de café. O primeiro passo é obter os tipos de dados suportados pelo Firebird com uma chamada ao método getTypeInfo() da interface DatabaseMetaData. Os campos do ResultSet que nos interessam são TYPE_NAME e DATA_TYPE. TYPE_NAME traz o nome do tipo de dados no Firebird enquanto DATA_TYPE traz o tipo JDBC correspondente como um inteiro. Assim, o que temos que fazer é usar reflexão para obter todos os campos da classe java.sql.Types e efetuar um mapeamento entre os tipos. Veja o código completo para o exemplo: package estudos_jdbc; import java.lang.reflect.Field; import java.sql.*; import java.util.HashMap; import java.util.Map; public class Main{ static Map mapa; // usado para mapear os tipos JDBC public static void main(String[] args) { // string de conexão String databaseURL = "jdbc:firebirdsql:localhost/3050:C:\\Firebird_2_5\\dados\\estudos.fdb"; String user = "sysdba"; String password = "masterkey"; String driverName = "org.firebirdsql.jdbc.FBDriver"; try { Class.forName(driverName).newInstance(); Connection conn = DriverManager.getConnection(databaseURL, user, password); // vamos obter um objeto da classe org.firebirdsql.jdbc.FBDatabaseMetaData DatabaseMetaData dbmd = conn.getMetaData(); // vamos obter os tipos de dados suportados por esta versão do Firebird // e seus correspondentes JDBC ResultSet tiposDados = dbmd.getTypeInfo(); while(tiposDados.next()){ System.out.println("Firebird: " + tiposDados.getString("TYPE_NAME") + " - JDBC: " + getJdbcTypeName(Integer.parseInt(tiposDados.getString("DATA_TYPE")))); } // vamos fechar o ResultSet tiposDados.close(); } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } catch (Exception e) { System.out.println("Problemas ao tentar conectar com o banco de dados: " + e); O resultado da execução deste código foi: Firebird: BIGINT - JDBC: BIGINT Firebird: BLOB SUB_TYPE 0 - JDBC: LONGVARBINARY Firebird: BLOB SUB_TYPE 1 - JDBC: LONGVARCHAR Firebird: CHAR - JDBC: CHAR Firebird: NUMERIC - JDBC: NUMERIC Firebird: DECIMAL - JDBC: DECIMAL Firebird: INTEGER - JDBC: INTEGER Firebird: SMALLINT - JDBC: SMALLINT Firebird: FLOAT - JDBC: FLOAT Firebird: DOUBLE PRECISION - JDBC: DOUBLE Firebird: VARCHAR - JDBC: VARCHAR Firebird: DATE - JDBC: DATE Firebird: TIME - JDBC: TIME Firebird: TIMESTAMP - JDBC: TIMESTAMP Firebird: ARRAY - JDBC: OTHER Firebird: BLOB SUB_TYPE <0 - JDBC: BLOB |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |