Compartir a través de


Método getColumns (SQLServerDatabaseMetaData)

Descargar controlador JDBC

Recupera una descripción de las columnas de la tabla que están disponibles en el catálogo especificado.

Sintaxis

  
public java.sql.ResultSet getColumns(java.lang.String catalog,  
                                     java.lang.String schema,  
                                     java.lang.String table,  
                                     java.lang.String col)  

Parámetros

catalog

Objeto String que contiene el nombre del catálogo.

schema

Objeto String que contiene el modelo de nombre del esquema.

table

Objeto String que contiene el patrón de nombre de tabla.

col

Objeto String que contiene el patrón de nombre de columna.

Valor devuelto

Objeto SQLServerResultSet.

Excepciones

SQLServerException

Observaciones

El método getColumns especifica este método getColumns en la interfaz java.sql.DatabaseMetaData.

El conjunto de resultados devuelto por el método getColumns contendrá la siguiente información:

Nombre Tipo Descripción
TABLE_CAT String Nombre del catálogo.
TABLE_SCHEM String Esquema de la tabla.
TABLE_NAME String El nombre de la tabla.
COLUMN_NAME String Nombre de columna.
DATA_TYPE smallint Tipo de datos SQL de java.sql.Types.
TYPE_NAME String El nombre del tipo de datos.
COLUMN_SIZE int Precisión de la columna.
BUFFER_LENGTH smallint Tamaño de transferencia de los datos.
DECIMAL_DIGITS smallint Escala de la columna.
NUM_PREC_RADIX smallint Base de la columna.
NULLABLE smallint Indica si la columna admite valores NULL. Puede ser uno de los siguientes valores:

columnNoNulls (0)

columnNullable (1)
COMENTARIOS String Comentarios asociados con la columna.

Nota: SQL Server siempre devuelve un valor NULL para esta columna.
COLUMN_DEF String Valor predeterminado de la columna.
SQL_DATA_TYPE smallint Valor del tipo de datos SQL tal como aparece en el campo TYPE del descriptor. Esta columna es igual que la columna DATA_TYPE, salvo por los tipos de datos datetime e interval de SQL-92. Esta columna siempre devuelve un valor.
SQL_DATETIME_SUB smallint Código de subtipo para los tipos de datos interval de SQL-92 y datetime. Para otros tipos de datos, esta columna devuelve NULL.
CHAR_OCTET_LENGTH int Número máximo de bytes en la columna.
ORDINAL_POSITION int Índice de la columna en la tabla.
IS_NULLABLE String Indica si la columna admite valores NULL.
SS_IS_SPARSE smallint Si la columna es una columna dispersa, esto tiene el valor 1; de lo contrario, 0.1.
SS_IS_COLUMN_SET smallint Si la columna es la columna column_set dispersa, esto tiene el valor 1; de lo contrario, 0. 1
SS_IS_COMPUTED smallint Indica si una columna en un TABLE_TYPE es una columna calculada. 1
IS_AUTOINCREMENT String Es "SÍ" si la columna se incrementa automáticamente. Es "NO" si la columna no se incrementa automáticamente. Es "" (cadena vacía) si el controlador no puede determinar si la columna se incrementa automáticamente. 1
SS_UDT_CATALOG_NAME String Nombre del catálogo que contiene el tipo definido por el usuario (UDT). 1
SS_UDT_SCHEMA_NAME String Nombre del esquema que contiene el tipo definido por el usuario (UDT). 1
SS_UDT_ASSEMBLY_TYPE_NAME String Tipo definido por el usuario (UDT) del nombre completo. 1
SS_XML_SCHEMACOLLECTION_CATALOG_NAME String Nombre del catálogo donde se define el nombre de una colección de esquemas XML. Si no se encuentra el nombre de catálogo, esta variable contiene una cadena vacía. 1
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME String Nombre del esquema donde se define el nombre de una colección de esquemas XML. Si no se puede encontrar el nombre de esquema, esta cadena estará vacía. 1
SS_XML_SCHEMACOLLECTION_NAME String Nombre de una colección de esquemas XML. Si no se puede encontrar el nombre, esta cadena estará vacía. 1
SS_DATA_TYPE tinyint Tipo de datos de SQL Server que utilizan los procedimientos almacenados extendidos.

Nota: Para más información sobre los tipos de datos que devuelve SQL Server, vea "Tipos de datos (Transact-SQL)" en los Libros en pantalla de SQL Server.

(1) Esta columna no estará presente si se está conectando con SQL Server 2005 (9.x).

Nota:

Para más información sobre los datos que devuelve el método getColumns, consulte "sp_columns (Transact-SQL)" en Libros en pantalla de SQL Server.

En el controlador JDBC 3.0 de Microsoft SQL Server, observará los siguientes cambios de comportamiento con respecto a las versiones anteriores del controlador JDBC:

La columna DATA_TYPE tiene los cambios siguientes:

Tipo de datos de SQL Server Tipo devuelto en el controlador JDBC 2.0 (o si se conecta a SQL Server 2005 [9.x]) y constante numérica asociada Tipo devuelto en el controlador JDBC 3.0 cuando se conecta a SQL Server 2008 (10.0.x) o una versión posterior
tipo definido por el usuario mayor que 8 KB LONGVARBINARY (-4) VARBINARY (-3)
geography LONGVARBINARY (-4) VARBINARY (-3)
geometry LONGVARBINARY (-4) VARBINARY (-3)
varbinary(max) LONGVARBINARY (-4) VARBINARY (-3)
nvarchar(max) LONGVARCHAR (-1) o LONGNVARCHAR (JDBC 4) (-16) VARCHAR (12) o NVARCHAR (JDBC 4) (-9)
ntext LONGVARCHAR (-1) VARCHAR (12)
time VARCHAR (12) o NVARCHAR (JDBC 4) (-9) TIME (-154)
date VARCHAR (12) o NVARCHAR (JDBC 4) (-9) DATE (91)
datetime2 VARCHAR (12) o NVARCHAR (JDBC 4) (-9) TIMESTAMP (93)
datetimeoffset VARCHAR (12) o NVARCHAR (JDBC 4) (-9) microsoft.sql.Types.DATETIMEOFFSET (-155)

La columna COLUMN_SIZE tiene los siguientes cambios:

Tipo de datos de SQL Server Tipo devuelto en el controlador JDBC 2.0 Tipo devuelto en el controlador JDBC 3.0
nvarchar(max) 1073741823 2147483647 (metadatos de base de datos)
Xml 1073741823 2147483647 (metadatos de base de datos)
tipo definido por el usuario menor o igual que 8 KB 8 KB (conjunto de resultados y metadatos de parámetro) Tamaño real que devuelve el procedimiento almacenado.
time La longitud en caracteres de la representación de cadena del tipo (suponiendo la precisión máxima permitida del componente de fracciones de segundo).
date igual que time
datetime2 igual que time
datetimeoffset igual que time

La columna BUFFER_LENGTH tiene el siguiente cambio:

Tipo de datos de SQL Server Tipo devuelto en el controlador JDBC 2.0 Tipo devuelto en el controlador JDBC 3.0
tipo definido por el usuario mayor que 8 KB 2147483647

La columna TYPE_NAME tiene los siguientes cambios:

Tipo de datos de SQL Server Tipo devuelto en el controlador JDBC 2.0 Tipo devuelto en el controlador JDBC 3.0
ntext text varchar
varbinary(max) imagen varbinary

La columna DECIMAL_DIGITS tiene los siguientes cambios:

Tipo de datos de SQL Server Controlador JDBC 2.0 Controlador JDBC 3.0
time null 7 (o menor si se especifica)
date null null
datetime2 null 7 (o menor si se especifica)
datetimeoffset null 7 (o menor si se especifica)

La columna SQL_DATA_TYPE tiene los siguientes cambios:

Tipo de datos de SQL Server Valor de datos de SQL Server 2008 en el controlador JDBC 2.0 Valor de datos de SQL Server 2008 en el controlador JDBC 3.0
ntext -10 -9
nvarchar(max) -1 -9
Xml -10 -152
tipo definido por el usuario menor o igual que 8 KB -3 -151
tipo definido por el usuario mayor que 8 KB No está disponible en el controlador JDBC 2.0 -151
geography -4 -151
geometry -4 -151
hierarchyid -4 -151
time -9 92
date -9 91
datetime2 -9 93
datetimeoffset -9 -155

Ejemplo

En el siguiente ejemplo se muestra cómo usar el método getColumns para devolver información para la tabla Person.Contact en la base de datos de ejemploAdventureWorks2022.

import java.sql.*;  
public class c1 {  
   public static void main(String[] args) {  
      String connectionUrl = "jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedsecurity=true";  
  
      Connection con = null;  
      Statement stmt = null;  
      ResultSet rs = null;  
  
      try {  
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
         con = DriverManager.getConnection(connectionUrl);  
         DatabaseMetaData dbmd = con.getMetaData();  
         rs = dbmd.getColumns("AdventureWorks", "Person", "Contact", "FirstName");  
  
         ResultSet r = dbmd.getColumns(null, null, "Contact", null);  
         ResultSetMetaData rm = r.getMetaData();   
         int noofcols = rm.getColumnCount();  
  
         if (r.next())  
            for (int i = 0 ; i < noofcols ; i++ )  
            System.out.println(rm.getColumnName( i + 1 ) + ": \t\t" + r.getString( i + 1 ));  
      }  
  
      catch (Exception e) {}  
      finally {}  
   }  
}  

Consulte también

Métodos SQLServerDatabaseMetaData
Miembros SQLServerDatabaseMetaData
Clase SQLServerDatabaseMetaData