Metodo getColumns (SQLServerDatabaseMetaData)

Scaricare il driver JDBC

Recupera una descrizione delle colonne di una tabella disponibili nel catalogo specificato.

Sintassi

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

Parametri

catalogo

Valore String contenente il nome del catalogo.

schema

Valore String contenente il modello del nome dello schema.

table

Valore String contenente il modello del nome della tabella.

col

Valore String contenente il modello del nome della colonna.

Valore restituito

Oggetto SQLServerResultSet.

Eccezioni

SQLServerException

Osservazioni:

Questo metodo getColumns viene specificato dal metodo getColumns nell'interfaccia java.sql.DatabaseMetaData.

Il set di risultati restituito dal metodo getColumns conterrà le informazioni seguenti:

Nome Tipo Descrizione
TABLE_CAT Stringa Nome del catalogo.
TABLE_SCHEM Stringa Nome dello schema della tabella.
TABLE_NAME Stringa Il nome della tabella.
COLUMN_NAME Stringa Nome della colonna.
DATA_TYPE smallint Tipo di dati SQL da java.sql.Types.
TYPE_NAME Stringa Nome del tipo di dati.
COLUMN_SIZE int Precisione della colonna.
BUFFER_LENGTH smallint Dimensioni di trasferimento dei dati.
DECIMAL_DIGITS smallint Scala della colonna.
NUM_PREC_RADIX smallint Radice della colonna.
NULLABLE smallint Indica se la colonna ammette i valori Null. Può essere uno dei valori seguenti:

columnNoNulls (0)

columnNullable (1)
REMARKS Stringa Commenti associati alla colonna.

Nota: restituisce sempre Null per questa colonna...
COLUMN_DEF Stringa Valore predefinito della colonna.
SQL_DATA_TYPE smallint Valore del tipo di dati SQL visualizzato nel campo TYPE del descrittore. Questa colonna corrisponde alla colonna DATA_TYPE, tranne per i tipi di dati datetime e interval SQL-92. Questa colonna restituisce sempre un valore .
SQL_DATETIME_SUB smallint Codice di sottotipo per i tipi di dati SQL-92 datetime e interval. Per gli altri tipi di dati in questa colonna viene restituito NULL.
CHAR_OCTET_LENGTH int Numero massimo di byte nella colonna.
ORDINAL_POSITION int Indice della colonna all'interno della tabella.
IS_NULLABLE Stringa Indica se la colonna ammette valori Null.
SS_IS_SPARSE smallint Se la colonna è di tipo sparse, il relativo valore è 1; in caso contrario, è 0.1
SS_IS_COLUMN_SET smallint Se la colonna è la colonna column_set di tipo sparse, il relativo valore è 1; in caso contrario, è 0. 1
SS_IS_COMPUTED smallint Indica se una colonna in TABLE_TYPE è una colonna calcolata. 1
IS_AUTOINCREMENT Stringa "YES" se la colonna è incrementata automaticamente. "NO" se la colonna non è incrementata automaticamente. "" (stringa vuota) se il driver non è in grado di determinare se la colonna è incrementata automaticamente. 1
SS_UDT_CATALOG_NAME Stringa Nome del catalogo contenente il tipo definito dall'utente (UDT). 1
SS_UDT_SCHEMA_NAME Stringa Nome dello schema contenente il tipo definito dall'utente (UDT). 1
SS_UDT_ASSEMBLY_TYPE_NAME Stringa Tipo definito dall'utente (UDT) del nome completo. 1
SS_XML_SCHEMACOLLECTION_CATALOG_NAME Stringa Nome del catalogo in cui viene definito il nome di una raccolta di XML Schema. Se non è possibile trovare il nome del catalogo, questa variabile contiene una stringa vuota. 1
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME Stringa Nome dello schema in cui viene definito il nome di una raccolta di XML Schema. Se non è possibile trovare il nome dello schema, viene visualizzata una stringa vuota. 1
SS_XML_SCHEMACOLLECTION_NAME Stringa Nome di una raccolta di XML Schema. Se non è possibile trovare il nome, viene visualizzata una stringa vuota. 1
SS_DATA_TYPE tinyint Tipo di dati di SQL Server usato in stored procedure estese.

Nota Per altre informazioni sui tipi di dati restituiti da SQL Server, vedere "Tipi di dati (Transact-SQL)" nella documentazione online di SQL Server.

(1) Questa colonna non è presente se ci si connette a SQL Server 2005 (9.x).

Nota

Per altre informazioni sui dati restituiti dal metodo getColumns, vedere "sp_columns (Transact-SQL)" nella documentazione online di SQL Server.

In Microsoft SQL Server JDBC Driver 3.0 verranno visualizzate le modifiche di comportamento seguenti rispetto alle versioni precedenti del driver JDBC:

La colonna DATA_TYPE include le modifiche seguenti:

Tipo di dati di SQL Server Tipo restituito in JDBC Driver 2.0 (o in caso di connessione a SQL Server 2005 (9.x)) e costante numerica associata Tipo restituito in JDBC Driver 3.0 quando si è connessi a SQL Server 2008 (10.0.x) e versioni successive
tipo definito dall'utente maggiore di 8 kB LONGVARBINARY (-4) VARBINARY (-3)
geografia 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)
Ora VARCHAR (12) o NVARCHAR (JDBC 4) (-9) TIME (-154)
data 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 colonna COLUMN_SIZE presenta le modifiche seguenti:

Tipo di dati di SQL Server Tipo restituito in Microsoft JDBC Driver 2.0 Tipo restituito in Microsoft JDBC Driver 3.0
nvarchar(max) 1073741823 2147483647 (metadati del database)
xml 1073741823 2147483647 (metadati del database)
tipo definito dall'utente minore o uguale a 8 kB 8 KB (set di risultati e metadati del parametro) Dimensioni effettive restituite dalla stored procedure.
Ora Lunghezza in caratteri della rappresentazione di stringa del tipo, presupponendo la precisione massima consentita del componente delle frazioni di secondo.
data Uguale a time
datetime2 Uguale a time
datetimeoffset Uguale a time

La colonna BUFFER_LENGTH presenta la modifica seguente:

Tipo di dati di SQL Server Tipo restituito in Microsoft JDBC Driver 2.0 Tipo restituito in Microsoft JDBC Driver 3.0
tipo definito dall'utente maggiore di 8 kB 2147483647

La colonna TYPE_NAME presenta le modifiche seguenti:

Tipo di dati di SQL Server Tipo restituito in Microsoft JDBC Driver 2.0 Tipo restituito in Microsoft JDBC Driver 3.0
ntext Testo varchar
varbinary(max) image varbinary

La colonna DECIMAL_DIGITS presenta le modifiche seguenti:

Tipo di SQL Server Driver JDBC 2.0 Driver JDBC 3.0
Ora Null 7 (o inferiore se specificato)
data Null Null
datetime2 Null 7 (o inferiore se specificato)
datetimeoffset Null 7 (o inferiore se specificato)

La colonna SQL_DATA_TYPE presenta le modifiche seguenti:

Tipo di dati di SQL Server Valore dei dati di SQL Server 2008 in JDBC Driver 2.0 Valore dei dati di SQL Server 2008 in JDBC Driver 3.0
ntext -10 -9
nvarchar(max) -1 -9
xml -10 -152
tipo definito dall'utente minore o uguale a 8 kB -3 -151
tipo definito dall'utente maggiore di 8 kB Non disponibile in JDBC Driver 2.0 -151
geografia -4 -151
geometry -4 -151
hierarchyid -4 -151
Ora -9 92
data -9 91
datetime2 -9 93
datetimeoffset -9 -155

Esempio

Nell'esempio seguente viene illustrato come utilizzare il metodo getColumns per restituire informazioni per la tabella Person.Contact nel database di esempio 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 {}  
   }  
}  

Vedi anche

Metodi di SQLServerDatabaseMetaData
Membri di SQLServerDatabaseMetaData
Classe SQLServerDatabaseMetaData