Compartilhar via


Método getColumns (SQLServerDatabaseMetaData)

Baixar Driver JDBC

Recupera uma descrição das colunas da tabela que estão disponíveis no catálogo especificado.

Sintaxe

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

parâmetros

catalog

Uma String que contém o nome do catálogo.

schema

Uma String que contém o padrão de nome do esquema.

table

Uma String que contém o padrão de nome de tabela.

col

Uma String que contém o nome da coluna.

Valor retornado

Um objeto SQLServerResultSet.

Exceções

SQLServerException

Comentários

Esse método getColumns é especificado pelo método getColumns na interface java.sql.DatabaseMetaData.

O conjunto de resultados retornado pelo método getColumns conterá as seguintes informações:

Nome Type Descrição
TABLE_CAT Cadeia de caracteres O nome do catálogo.
TABLE_SCHEM Cadeia de caracteres O nome do esquema da tabela.
TABLE_NAME Cadeia de caracteres O nome da tabela.
COLUMN_NAME Cadeia de caracteres O nome da coluna.
DATA_TYPE smallint O tipo de dados SQL de java.sql.Types.
TYPE_NAME Cadeia de caracteres O nome do tipo de dados.
COLUMN_SIZE int A precisão da coluna.
BUFFER_LENGTH smallint Tamanho da transferência dos dados.
DECIMAL_DIGITS smallint A escala da coluna.
NUM_PREC_RADIX smallint A base da coluna.
NULLABLE smallint Indica se a coluna é anulável. Pode ser um dos seguintes valores:

columnNoNulls (0)

columnNullable (1)
COMENTÁRIOS Cadeia de caracteres Os comentários associados à coluna.

Observação: SQL Server sempre retorna null para essa coluna.
COLUMN_DEF Cadeia de caracteres O valor padrão da coluna.
SQL_DATA_TYPE smallint Valor do tipo de dados SQL conforme exibido no campo TYPE do descritor. Esta coluna é igual à coluna DATA_TYPE, com exceção dos tipos de dados datetime e interval do SQL-92. Esta coluna sempre retorna um valor.
SQL_DATETIME_SUB smallint Código de subtipo para os tipos de dados datetime e interval do SQL-92. Para outros tipos de dados, esta coluna retorna NULL.
CHAR_OCTET_LENGTH int O número máximo de bytes na coluna.
ORDINAL_POSITION int O índice da coluna na tabela.
IS_NULLABLE Cadeia de caracteres Indica se a coluna permite valores nulos.
SS_IS_SPARSE smallint Se a coluna for uma coluna esparsa, seu valor será 1; caso contrário, será 0.1
SS_IS_COLUMN_SET smallint Se a coluna for a coluna esparsa column_set, seu valor será 1; caso contrário, será 0. 1
SS_IS_COMPUTED smallint Indica se uma coluna em um TABLE_TYPE é uma coluna computada. 1
IS_AUTOINCREMENT Cadeia de caracteres "YES" se a coluna for incrementada automaticamente. "NO" se a coluna não for incrementada automaticamente. " "(cadeia de caracteres vazia) se o driver não puder determinar se a coluna foi incrementada automaticamente. 1
SS_UDT_CATALOG_NAME Cadeia de caracteres O nome do catálogo que contém o UDT (tipo definido pelo usuário). 1
SS_UDT_SCHEMA_NAME Cadeia de caracteres O nome do esquema que contém o UDT (tipo definido pelo usuário). 1
SS_UDT_ASSEMBLY_TYPE_NAME Cadeia de caracteres O UDT (tipo definido pelo usuário) do nome totalmente qualificado. 1
SS_XML_SCHEMACOLLECTION_CATALOG_NAME Cadeia de caracteres O nome do catálogo em que é definido um nome da coleção de esquemas XML. Se não for possível localizar o nome do catálogo, essa variável conterá uma cadeia de caracteres vazia. 1
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME Cadeia de caracteres O nome do esquema no qual é definido um nome da coleção de esquemas XML. Se não for possível localizar o nome do esquema, essa cadeia de caracteres estará vazia. 1
SS_XML_SCHEMACOLLECTION_NAME Cadeia de caracteres O nome de uma coleção de esquemas XML. Se não for possível localizar o nome, essa cadeia de caracteres estará vazia. 1
SS_DATA_TYPE tinyint O tipo de dados do SQL Server usado por procedimentos armazenados estendidos.

Observação: para saber mais sobre os tipos de dados retornados pelo SQL Server, veja "Tipos de dados (Transact-SQL)" nos Manuais Online do SQL Server.

(1) Essa coluna não estará presente se você estiver se conectando ao SQL Server 2005 (9.x).

Observação

Para saber mais sobre os dados retornados pelo método getColumns, confira "sp_columns (Transact-SQL)" nos Manuais Online do SQL Server.

No Microsoft SQL Server JDBC Driver 3.0, você verá as seguintes alterações de comportamento das versões mais antigas do JDBC Driver:

A coluna DATA_TYPE tem as seguintes alterações:

Tipo de dados do SQL Server Tipo de retorno no JDBC Driver 2.0 (ou, se conectado ao SQL Server 2005 (9.x)) e Constante Numérica Associada Tipo de retorno no JDBC Driver 3.0 quando conectado ao SQL Server 2008 (10.0.x) ou versões posteriores
tipo definido pelo usuário superior a 8 KB LONGVARBINARY (-4) VARBINARY (-3)
geografia LONGVARBINARY (-4) VARBINARY (-3)
geometria LONGVARBINARY (-4) VARBINARY (-3)
varbinary(max) LONGVARBINARY (-4) VARBINARY (-3)
nvarchar(max) LONGVARCHAR (-1) ou LONGNVARCHAR (JDBC 4) (-16) VARCHAR (12) ou NVARCHAR (JDBC 4) (-9)
varchar(max) LONGVARCHAR (-1) VARCHAR (12)
time VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) TIME (-154)
data VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) DATA (91)
datetime2 VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) TIMESTAMP (93)
datetimeoffset VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) microsoft.sql.Types.DATETIMEOFFSET (-155)

A coluna COLUMN_SIZE tem as seguintes alterações:

Tipo de dados do SQL Server Tipo de retorno no JDBC Driver 2.0 Tipo de retorno no JDBC Driver 3.0
nvarchar(max) 1073741823 2147483647 (metadados do banco de dados)
Xml 1073741823 2147483647 (metadados do banco de dados)
tipo definido pelo usuário com menos de ou igual a 8 KB 8 KB (conjunto de resultados e metadados de parâmetro) Tamanho real retornado pelo procedimento armazenado.
time O comprimento em caracteres da representação de cadeia de caracteres do tipo, supondo a precisão máxima permitida do componente de segundos fracionais.
data igual à hora
datetime2 igual à hora
datetimeoffset igual à hora

A coluna BUFFER_LENGTH tem a seguinte alteração:

Tipo de dados do SQL Server Tipo de retorno no JDBC Driver 2.0 Tipo de retorno no JDBC Driver 3.0
tipo definido pelo usuário superior a 8 KB 2147483647

A coluna TYPE_NAME tem as seguintes alterações:

Tipo de dados do SQL Server Tipo de retorno no JDBC Driver 2.0 Tipo de retorno no JDBC Driver 3.0
varchar(max) text varchar
varbinary(max) image varbinary

A coluna DECIMAL_DIGITS tem as seguintes alterações:

Tipo do SQL Server JDBC Driver 2.0 JDBC Driver 3.0
time nulo 7 (ou menor se especificado)
data nulo nulo
datetime2 nulo 7 (ou menor se especificado)
datetimeoffset nulo 7 (ou menor se especificado)

A coluna SQL_DATA_TYPE tem as seguintes alterações:

Tipo de dados do SQL Server Valor de dados do SQL Server 2008 no JDBC Driver 2.0 Valor de dados do SQL Server 2008 no JDBC Driver 3.0
varchar(max) -10 -9
nvarchar(max) -1 -9
Xml -10 -152
tipo definido pelo usuário com menos de ou igual a 8 KB -3 -151
tipo definido pelo usuário superior a 8 KB Não disponível no JDBC Driver 2.0 -151
geografia -4 -151
geometria -4 -151
hierarchyid -4 -151
time -9 92
data -9 91
datetime2 -9 93
datetimeoffset -9 -155

Exemplo

O exemplo a seguir demonstra como usar o método getColumns para retornar informações da tabela Person.Contact no banco de dados de exemplo do AdventureWorks2022.

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 Também

Métodos SQLServerDatabaseMetaData
Membros SQLServerDatabaseMetaData
Classe SQLServerDatabaseMetaData