Méthode getColumns (SQLServerDatabaseMetaData)

Télécharger le pilote JDBC

Récupère une description des colonnes d'une table qui sont disponibles dans le catalogue spécifié.

Syntaxe

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

Paramètres

catalog

Chaîne contenant le nom du catalogue.

schema

Chaîne contenant le modèle de nom du schéma.

table

String contenant le modèle de nom de la table.

col

Valeur chaîne qui contient le modèle du nom de la colonne.

Valeur de retour

Objet SQLServerResultSet.

Exceptions

SQLServerException

Notes

Cette méthode getColumns est spécifiée par la méthode getColumns de l’interface java.sql.DatabaseMetaData.

Le jeu de résultats retourné par la méthode getColumns contient les informations suivantes :

Nom Type Description
TABLE_CAT Chaîne Nom du catalogue.
TABLE_SCHEM Chaîne Le nom du schéma de la table.
TABLE_NAME Chaîne Nom de la table.
COLUMN_NAME Chaîne Nom de la colonne.
DATA_TYPE smallint Type de données SQL de java.sql.Types.
TYPE_NAME Chaîne Nom du type de données.
COLUMN_SIZE int Précision de la colonne.
BUFFER_LENGTH smallint Taille de transfert des données.
DECIMAL_DIGITS smallint Échelle de la colonne.
NUM_PREC_RADIX smallint Base de la colonne.
NULLABLE smallint Indique si la colonne accepte la valeur Null. Ce peut être l’une des valeurs suivantes :

columnNoNulls (0)

columnNullable (1)
Remarques Chaîne Commentaires associés à la colonne.

Remarque : SQL Server retourne toujours Null pour cette colonne.
COLUMN_DEF Chaîne Valeur par défaut de la colonne.
SQL_DATA_TYPE smallint Valeur du type de données SQL tel qu'il apparaît dans le champ TYPE du descripteur. Cette colonne est la même que la colonne DATA_TYPE, excepté pour le type de données datetime et pour le type de données interval de SQL-92. Cette colonne renvoie toujours une valeur.
SQL_DATETIME_SUB smallint Code de sous-type pour le type de données datetime et pour le type de données interval de SQL-92. Pour les autres types de données, cette colonne renvoie la valeur NULL.
CHAR_OCTET_LENGTH int Nombre maximal d'octets dans la colonne.
ORDINAL_POSITION int Index de la colonne dans la table.
IS_NULLABLE Chaîne Indique si la colonne autorise les valeurs Null.
SS_IS_SPARSE smallint Si la colonne est une colonne éparse, la valeur est 1 ; sinon, 0.1
SS_IS_COLUMN_SET smallint Si la colonne est la colonne éparse column_set, la valeur est 1 ; sinon, 0. 1
SS_IS_COMPUTED smallint Indique si une colonne dans un TABLE_TYPE est une colonne calculée. 1
IS_AUTOINCREMENT Chaîne « YES » si la colonne est incrémentée automatiquement. « NO » si la colonne n'est pas incrémentée automatiquement. « » (chaîne vide) si le pilote ne peut pas déterminer si la colonne est incrémentée automatiquement. 1
SS_UDT_CATALOG_NAME Chaîne Nom du catalogue qui contient le type défini par l'utilisateur (UDT). 1
SS_UDT_SCHEMA_NAME Chaîne Nom du schéma qui contient le type défini par l'utilisateur (UDT). 1
SS_UDT_ASSEMBLY_TYPE_NAME Chaîne Type défini par l'utilisateur (UDT) du nom complet. 1
SS_XML_SCHEMACOLLECTION_CATALOG_NAME Chaîne Nom du catalogue dans lequel un nom de collection de schémas XML est défini. Si le nom du catalogue est introuvable, cette variable contient une chaîne vide. 1
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME Chaîne Nom du schéma dans lequel un nom de collection de schémas XML est défini. Si le nom du schéma est introuvable, la chaîne est vide. 1
SS_XML_SCHEMACOLLECTION_NAME Chaîne Nom d'une collection de schémas XML. Si le nom est introuvable, la chaîne est vide. 1
SS_DATA_TYPE tinyint Type de données SQL Server utilisé par les procédures stockées étendues.

Remarque : Pour plus d’informations sur les types de données retournés par SQL Server, consultez la rubrique « Types de données (Transact-SQL) » dans la documentation en ligne de SQL Server.

(1) Cette colonne sera absente si vous vous connectez à SQL Server 2005 (9.x).

Notes

Pour plus d’informations sur les données retournées par la méthode getColumns, consultez la rubrique « sp_columns (Transact-SQL) » dans la documentation en ligne de SQL Server.

Dans Microsoft SQL Server JDBC Driver 3.0, vous constaterez les changements de comportement suivants par rapport aux versions antérieures du pilote JDBC :

La colonne DATA_TYPE intègre les modifications suivantes :

Type de données de SQL Server Type de retour dans le pilote JDBC version 2.0 (ou en cas de connexion à SQL Server 2005 (9.x)) et constante numérique associée Type de retour dans le pilote JDBC version 3.0 en cas de connexion à SQL Server 2008 (10.0.x) et versions ultérieures
type défini par l'utilisateur supérieur à 8 Ko LONGVARBINARY (-4) VARBINARY (-3)
Geography LONGVARBINARY (-4) VARBINARY (-3)
geometry 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)
Date VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) DATE (91)
datetime2 VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) TIMESTAMP (93)
datetimeoffset VARCHAR (12) ou NVARCHAR (JDBC 4) (-9) microsoft.sql.Types.DATETIMEOFFSET (-155)

La colonne COLUMN_SIZE intègre les modifications suivantes :

Type de données de SQL Server Type de retour dans le pilote JDBC version 2.0 Type de retour dans le pilote JDBC version 3.0
nvarchar(max) 1073741823 2147483647 (métadonnées de base de données)
Xml 1073741823 2147483647 (métadonnées de base de données)
type défini par l'utilisateur inférieur ou égal à 8 Ko 8 Ko (jeu de résultats et métadonnées de paramètre) Taille réelle retournée par la procédure stockée.
time Longueur en caractères de la représentation de chaîne du type, en tenant compte de la précision maximale autorisée pour le composant fractions de seconde.
Date identique à time
datetime2 identique à time
datetimeoffset identique à time

La colonne BUFFER_LENGTH intègre la modification suivante :

Type de données de SQL Server Type de retour dans le pilote JDBC version 2.0 Type de retour dans le pilote JDBC version 3.0
type défini par l'utilisateur supérieur à 8 Ko 2147483647

La colonne TYPE_NAME intègre les modifications suivantes :

Type de données de SQL Server Type de retour dans le pilote JDBC version 2.0 Type de retour dans le pilote JDBC version 3.0
varchar(max) text varchar
varbinary(max) image varbinary

La colonne DECIMAL_DIGITS intègre les modifications suivantes :

Type SQL Server Pilote JDBC version 2.0 Pilote JDBC version 3.0
time null 7 (ou inférieur, si spécifié)
Date null null
datetime2 null 7 (ou inférieur, si spécifié)
datetimeoffset null 7 (ou inférieur, si spécifié)

La colonne SQL_DATA_TYPE intègre les modifications suivantes :

Type de données de SQL Server Valeur des données de SQL Server 2008 dans le pilote JDBC version 2.0 Valeur des données de SQL Server 2008 dans le pilote JDBC version 3.0
varchar(max) -10 -9
nvarchar(max) -1 -9
Xml -10 -152
type défini par l'utilisateur inférieur ou égal à 8 Ko -3 -151
type défini par l'utilisateur supérieur à 8 Ko Non disponible dans le pilote JDBC version 2.0 -151
Geography -4 -151
geometry -4 -151
hierarchyid -4 -151
time -9 92
Date -9 91
datetime2 -9 93
datetimeoffset -9 -155

Exemple

L’exemple suivant montre comment utiliser la méthode getColumns pour retourner des informations pour la table Person.Contact dans l’exemple de base de données 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 {}  
   }  
}  

Voir aussi

Méthodes SQLServerDatabaseMetaData
SQLServerDatabaseMetaData, membres
SQLServerDatabaseMetaData, classe