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
Un String que contiene el nombre del catálogo.
schema
Un String que contiene el modelo de nombre del esquema.
table
Un objeto String que contiene el patrón de nombre de tabla.
col
Un objeto String que contiene el patrón de nombre de columna.
Valor devuelto
Un objeto SQLServerResultSet.
Excepciones
Comentarios
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 | Type | Descripción |
---|---|---|
TABLE_CAT | String | Nombre del catálogo. |
TABLE_SCHEM | String | Nombre del esquema de tabla. |
TABLE_NAME | String | Nombre de la tabla. |
COLUMN_NAME | String | Nombre de columna. |
DATA_TYPE | smallint | Tipo de datos SQL de java.sql.Types. |
TYPE_NAME | String | 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 acepta valores NULL. Puede ser uno de los siguientes valores: columnNoNulls (0) columnNullable (1) |
REMARKS | String | Comentarios asociados con la columna. SQL Server siempre devuelve el 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 obtener más información sobre los tipos de datos que ha devuelto 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.
Para obtener más información sobre los datos que devuelve el método getColumns, vea "sp_columns (Transact-SQL)" en los Libros en pantalla de SQL Server.
En el controlador JDBC 3.0 de MicrosoftSQL Server, observará que existen 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 está conectado con SQL Server 2005) y constante numérica asociada | Tipo devuelto en el controlador JDBC 3.0 cuando se conecta con SQL Server 2008 o una versión posterior |
---|---|---|
tipo definido por el usuario mayor que 8 KB | LONGVARBINARY (-4) | VARBINARY (-3) |
geografía | LONGVARBINARY (-4) | VARBINARY (-3) |
geometría | 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) |
varchar(max) | 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 |
---|---|---|
varchar(max) | text | varchar |
varbinary(max) | image | varbinary |
La columna DECIMAL_DIGITS tiene los siguientes cambios:
Tipo 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 Server2008 en el controlador JDBC 2.0 | Valor de datos de SQL Server 2008 en el controlador JDBC 3.0 |
---|---|---|
varchar(max) | -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 |
geografía | -4 | -151 |
geometría | -4 | -151 |
hierarchyid | -4 | -151 |
time | -9 | 92 |
date | -9 | 91 |
datetime2 | -9 | 93 |
datetimeoffset | -9 | -155 |
Ejemplo
En el ejemplo siguiente se muestra cómo usar el método getColumns para devolver información para la tabla Person.Contact en la base de datos de ejemplo AdventureWorks de SQL Server 2005.
import java.sql.*; public class c1 { public static void main(String[] args) { String connectionUrl = "jdbc:sqlserver://localhost:1433;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 {} } }