![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Você está aqui: Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como retornar os tipos de dados suportados pelo MySQL e seus correspondentes JDBC usando o método getTypeInfo() da interface DatabaseMetaDataQuantidade de visualizações: 6445 vezes |
|
Em algumas situações precisamos obter os tipos de dados suportados pelo MySQL 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 MySQL 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 MySQL 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 estudosbancodados;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
public class EstudosBancoDados{
static Map mapa; // usado para mapear os tipos JDBC
public static void main(String[] args) {
// strings de conexão
String databaseURL = "jdbc:mysql://localhost/estudos";
String usuario = "root";
String senha = "osmar1234";
String driverName = "com.mysql.jdbc.Driver";
try {
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);
// vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
DatabaseMetaData dbmd = conn.getMetaData();
// vamos obter os tipos de dados suportados por esta versão do MySQL
// e seus correspondentes JDBC
ResultSet tiposDados = dbmd.getTypeInfo();
while(tiposDados.next()){
System.out.println("MySQL: " + 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);
}
}
// Este método retorna o nome de um tipo JDBC
// O retorno é null se o tipo JDBC não puder ser reconhecido
public static String getJdbcTypeName(int jdbcType){
// vamos usar reflection para mapear valores inteiros a seus nomes
if(mapa == null) {
mapa = new HashMap();
// vamos obter todos os campos da classe java.sql.Types
Field[] campos = java.sql.Types.class.getFields();
// vamos percorrer os campos
for(int i = 0; i < campos.length; i++){
try{
// vamos obter o nome do campo
String nome = campos[i].getName();
// vamos obter o valor do campo
Integer valor = (Integer)campos[i].get(null);
// vamos adicionar ao mapa
mapa.put(valor, nome);
}
catch(IllegalAccessException e){
System.out.println("Ops: " + e.getMessage());
}
}
}
// vamos retornar o nome do tipo JDBC
return (String)mapa.get(new Integer(jdbcType));
}
}
O resultado da execução deste código foi: MySQL: BIT - JDBC: BIT MySQL: BOOL - JDBC: BIT MySQL: TINYINT - JDBC: TINYINT MySQL: TINYINT UNSIGNED - JDBC: TINYINT MySQL: BIGINT - JDBC: BIGINT MySQL: BIGINT UNSIGNED - JDBC: BIGINT MySQL: LONG VARBINARY - JDBC: LONGVARBINARY MySQL: MEDIUMBLOB - JDBC: LONGVARBINARY MySQL: LONGBLOB - JDBC: LONGVARBINARY MySQL: BLOB - JDBC: LONGVARBINARY MySQL: TINYBLOB - JDBC: LONGVARBINARY MySQL: VARBINARY - JDBC: VARBINARY MySQL: BINARY - JDBC: BINARY MySQL: LONG VARCHAR - JDBC: LONGVARCHAR MySQL: MEDIUMTEXT - JDBC: LONGVARCHAR MySQL: LONGTEXT - JDBC: LONGVARCHAR MySQL: TEXT - JDBC: LONGVARCHAR MySQL: TINYTEXT - JDBC: LONGVARCHAR MySQL: CHAR - JDBC: CHAR MySQL: NUMERIC - JDBC: NUMERIC MySQL: DECIMAL - JDBC: DECIMAL MySQL: INTEGER - JDBC: INTEGER MySQL: INTEGER UNSIGNED - JDBC: INTEGER MySQL: INT - JDBC: INTEGER MySQL: INT UNSIGNED - JDBC: INTEGER MySQL: MEDIUMINT - JDBC: INTEGER MySQL: MEDIUMINT UNSIGNED - JDBC: INTEGER MySQL: SMALLINT - JDBC: SMALLINT MySQL: SMALLINT UNSIGNED - JDBC: SMALLINT MySQL: FLOAT - JDBC: REAL MySQL: DOUBLE - JDBC: DOUBLE MySQL: DOUBLE PRECISION - JDBC: DOUBLE MySQL: REAL - JDBC: DOUBLE MySQL: VARCHAR - JDBC: VARCHAR MySQL: ENUM - JDBC: VARCHAR MySQL: SET - JDBC: VARCHAR MySQL: DATE - JDBC: DATE MySQL: TIME - JDBC: TIME MySQL: DATETIME - JDBC: TIMESTAMP MySQL: TIMESTAMP - JDBC: TIMESTAMP |
|
|
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 |




