¿Cómo obtener el tipo de datos de una columna de una tabla usando JDBC?

Java admite muchas bases de datos y, para cada base de datos, debemos tener sus respectivos archivos jar para colocarlos en la ruta de compilación para continuar con la conectividad JDBC.

  • MySQL : mysql-connector-java-8.0.22 o conectores mysql similares con diferentes versiones. En este artículo, estamos usando mysql-connector-java-8.0.22
  • Servidor SQL : sqljdbc4.jar
  • Oráculo : ojdbc14.jar
  • MongoDB (base de datos NoSQL): mongo-java-driver-3.12.7

Primero, debemos decidir qué base de datos estamos usando y, en consecuencia, debemos agregar los frascos. Para otra base de datos como Progress, Cassandra, etc., también tenemos archivos jar y debemos incluirlos en la ruta de compilación. Para varios asuntos relacionados con el procesamiento de datos de RDBMS (MySQL, SQL Server, etc.) tenemos un paquete java.sql. Para obtener el objeto ResultSetMetaData , debemos seguir los pasos a continuación.

1. Registre el controlador

Para la base de datos, difiere. Como estamos usando MySQL, podemos hacerlo a través de

Class.forName("com.mysql.cj.jdbc.Driver");
or
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver");

2. Obtenga la conexión de MySQL.

  • test es un nombre de base de datos utilizado en el código.
  • serverTimezone=UTC, si no se proporciona, tendremos java.sql.SQLException. El valor de la zona horaria del servidor xxxx no se reconoce o representa más de una zona horaria.
  • Necesitamos configurar el servidor o el controlador JDBC a través de la propiedad de configuración serverTimezone) para usar un valor de zona horaria más específico si queremos utilizar el soporte de zona horaria.
  • Entonces, ya sea en la configuración de MySQL, podemos establecer o como a continuación, podemos proporcionar Credenciales aquí son root / «», es decir, el nombre de usuario es root y la contraseña es «».

Conexión de conexión = DriverManager.getConnection(“jdbc:mysql://localhost:3306/test?serverTimezone=UTC”, “root”, “”);

3. Crear un objeto de declaración

Statement st = connection.createStatement();

4. Ejecutar la consulta

String query = "Select * from doctorsdetails";
// Executing the query
ResultSet resultSet = statement.executeQuery(query);

5. Obtenga el objeto ResultSetMetaData: 

Recupere el objeto ResultSetMetadata del ResultSet actual invocando el método getMetaData(). Los siguientes métodos están en el objeto ResultSetMetadata y están impresos en el programa

  • int getColumnCount(): Devuelve el número de columnas de una tabla.
  • String getColumnName(int columnNumber): Devuelve el nombre de la columna cuyo número de índice se pasa como parámetro.
  • int getColumnType(int columnNumber): Devuelve el nombre de la columna como un valor entero cuyo número de índice se pasa como parámetro.

Por ejemplo, 3 indica DECIMAL, 12 indica VARCHAR y 4 indica INT.  

  • 12 se representa como java.sql.Types.VARCHAR
  • 4 se representa como java.sql.Types.INTEGER

A continuación se muestra la lista de valores devueltos por varios tipos de datos de java.sql.Type, es decir, getColumnType() proporciona estos resultados.

  • Array: 2003
  • Gran entero: -5
  • Binario: -2
  • Bit: -7
  • Gota: 2004
  • Booleano: 16
  • Carácter: 1
  • Clob: 2005
  • Fecha: 91
  • Enlace de datos: 70
  • decimales: 3
  • Distinto: 2001
  • Doble: 8
  • Flotador: 6
  • Entero: 4
  • Objeto Java: 2000
  • Carácter variable largo: -16
  • Número: -15
  • NClob: 2011
  • Várchar: 12
  • VarBinario: -3
  • minúsculo int: -6
  • Marca de tiempo con zona horaria: 2014
  • Marca de tiempo: 93
  • Tiempo: 92
  • Estructura: 2002
  • SqlXml: 2009
  • Mint: 5
  • Ancho de fila: -8
  • Referencia: 2012
  • Referencia: 2006
  • reales: 7
  • Nvarchar: -9
  • Numérico: 2
  • nulo: 0
  • Mint: 5

Verifiquemos eso creando una tabla en MySQL y encontremos el tipo de datos usando ResultSetMetaData

Deje que una tabla llamada detalles de médicos esté disponible en MySQL en la base de datos de prueba ,

CREATE TABLE `doctorsdetails` (
 `id` int(6) unsigned NOT NULL,
 `Name` varchar(50) DEFAULT NULL,
 `AvailableDays` varchar(200) DEFAULT NULL,
 `consultation_fees` int(11) DEFAULT NULL,
 `qualification` varchar(20) DEFAULT NULL,
 `experience` int(11) DEFAULT NULL,
 `gender` varchar(10) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Según la tabla anterior, getColumnType() para las columnas de la tabla anterior son las siguientes

nombre de columna Tipo de columna Valor
identificación En t 4
Nombre varchar 12
DíasDisponibles  varchar 12
honorarios_consulta  En t 4
calificación  varchar 12
experiencia  En t 4
género varchar 12

En el código, usemos los pasos, y se dan como comentarios.

Java

// Java program to get the column type in JDBC
 
import java.sql.*;
 
public class GetColumnTypeInJdbc {
 
    public static void main(String[] args)
    {
        System.out.println(
            "Methods of column to get column type in JDBC");
        Connection con = null;
        try {
            // We need to have mysql-connector-java-8.0.22
            // or relevant jars in build path of project
            // Class.forName("com.mysql.jdbc.Driver");
            // //Earlier these were supported. If we use ,
            // we will be getting warning messages This
            // driver is the latest one
            // 1. Register the driver
 
            Class.forName("com.mysql.cj.jdbc.Driver");
 
            // 2. Get the connection
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?serverTimezone=UTC",
                "root", "");
            try {
 
                // Create statement so that we can execute
                // all of our queries
                // 3. Create a statement object
                Statement statement = con.createStatement();
 
                // Query to retrieve records
                String query
                    = "Select * from doctorsdetails";
 
                // 4. Executing the query
                ResultSet resultSet
                    = statement.executeQuery(query);
 
                // 5. Get the ResultSetMetaData object
                ResultSetMetaData resultSetMetaData
                    = resultSet.getMetaData();
 
                for (int i = 1;
                     i
                     <= resultSetMetaData.getColumnCount();
                     i++) {
                    System.out.println(
                        "ColumnName = "
                        + resultSetMetaData.getColumnName(
                              i));
                    System.out.println(
                        "ColumnType = "
                        + resultSetMetaData.getColumnType(i)
                        + "   ");
                    System.out.println(
                        "ColumnLabel = "
                        + resultSetMetaData.getColumnLabel(
                              i)
                        + "   ");
                    System.out.println(
                        "ColumnDisplaySize = "
                        + resultSetMetaData
                              .getColumnDisplaySize(i)
                        + "   ");
                    System.out.println(
                        "ColumnTypeName = "
                        + resultSetMetaData
                              .getColumnTypeName(i)
                        + "   ");
                    System.out.println(
                        "------------------");
                }
            }
 
            // in case of any SQL exceptions
            catch (SQLException s) {
                System.out.println(
                    "SQL statement is not executed!");
            }
        }
 
        // in case of general exceptions
        // other than SQLException
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            // After completing the operations, we
            // need to null resultSet and connection
            resultSet = null;
            con = null;
        }
    }
}

Al ejecutar el programa, obtendremos la salida como se muestra a continuación. es decir, similar al valor de la tabla que se muestra arriba 

column types of a table

Publicación traducida automáticamente

Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *