getColumns Method (SQLServerDatabaseMetaData)

Download JDBC driver

Retrieves a description of the table columns that are available in the specified catalog.

Syntax

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

Parameters

catalog

A String that contains the catalog name.

schema

A String that contains the schema name pattern.

table

A String that contains the table name pattern.

col

A String that contains the column name pattern.

Return Value

A SQLServerResultSet object.

Exceptions

SQLServerException

Remarks

This getColumns method is specified by the getColumns method in the java.sql.DatabaseMetaData interface.

The result set returned by the getColumns method will contain the following information:

Name Type Description
TABLE_CAT String The catalog name.
TABLE_SCHEM String The table schema name.
TABLE_NAME String The table name.
COLUMN_NAME String The column name.
DATA_TYPE smallint The SQL data type from java.sql.Types.
TYPE_NAME String The name of the data type.
COLUMN_SIZE int The precision of the column.
BUFFER_LENGTH smallint Transfer size of the data.
DECIMAL_DIGITS smallint The scale of the column.
NUM_PREC_RADIX smallint The radix of the column.
NULLABLE smallint Indicates if the column is nullable. It can be one of the following values:

columnNoNulls (0)

columnNullable (1)
REMARKS String The comments associated with the column.

Note: SQL Server always returns null for this column.
COLUMN_DEF String The default value of the column.
SQL_DATA_TYPE smallint Value of the SQL data type as it appears in the TYPE field of the descriptor. This column is the same as the DATA_TYPE column, except for the datetime and SQL-92 interval data types. This column always returns a value.
SQL_DATETIME_SUB smallint Subtype code for datetime and SQL-92 interval data types. For other data types, this column returns NULL.
CHAR_OCTET_LENGTH int The maximum number of bytes in the column.
ORDINAL_POSITION int The index of the column within the table.
IS_NULLABLE String Indicates if the column allows null values.
SS_IS_SPARSE smallint If the column is a sparse column, this has the value 1; otherwise, 0.1
SS_IS_COLUMN_SET smallint If the column is the sparse column_set column, this has the value 1; otherwise, 0. 1
SS_IS_COMPUTED smallint Indicates if a column in a TABLE_TYPE is a computed column. 1
IS_AUTOINCREMENT String "YES" if the column is auto incremented. "NO" if the column is not auto incremented. "" (empty string) if the driver cannot determine if the column is auto incremented. 1
SS_UDT_CATALOG_NAME String The name of the catalog that contains the user-defined type (UDT). 1
SS_UDT_SCHEMA_NAME String The name of the schema that contains the user-defined type (UDT). 1
SS_UDT_ASSEMBLY_TYPE_NAME String The fully-qualified name user-defined type (UDT). 1
SS_XML_SCHEMACOLLECTION_CATALOG_NAME String The name of the catalog where an XML schema collection name is defined. If the catalog name cannot be found, this variable contains an empty string. 1
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME String The name of the schema where an XML schema collection name is defined. If the schema name cannot be found, this is an empty string. 1
SS_XML_SCHEMACOLLECTION_NAME String The name of an XML schema collection. If the name cannot be found, this is an empty string. 1
SS_DATA_TYPE tinyint The SQL Server data type that is used by extended stored procedures.

Note For more information about the data types returned by SQL Server, see "Data Types (Transact-SQL)" in SQL Server Books Online.

(1) This column will not be present if you are connecting to SQL Server 2005 (9.x).

Note

For more information about the data returned by the getColumns method, see "sp_columns (Transact-SQL)" in SQL Server Books Online.

In the Microsoft SQL Server JDBC Driver 3.0, you will see the following behavior changes from earlier versions of the JDBC Driver:

The DATA_TYPE column has the following changes:

SQL Server Data Type Return Type in JDBC Driver 2.0 (or, if connected to SQL Server 2005 (9.x)) and Associated Numeric Constant Return Type in JDBC Driver 3.0 when connected to SQL Server 2008 (10.0.x) and later versions
user-defined type larger than 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) or LONGNVARCHAR (JDBC 4) (-16) VARCHAR (12) or NVARCHAR (JDBC 4) (-9)
varchar(max) LONGVARCHAR (-1) VARCHAR (12)
time VARCHAR (12) or NVARCHAR (JDBC 4) (-9) TIME (-154)
date VARCHAR (12) or NVARCHAR (JDBC 4) (-9) DATE (91)
datetime2 VARCHAR (12) or NVARCHAR (JDBC 4) (-9) TIMESTAMP (93)
datetimeoffset VARCHAR (12) or NVARCHAR (JDBC 4) (-9) microsoft.sql.Types.DATETIMEOFFSET (-155)

The COLUMN_SIZE column has the following changes:

SQL Server Data Type Return Type in JDBC Driver 2.0 Return Type in JDBC Driver 3.0
nvarchar(max) 1073741823 2147483647 (database metadata)
xml 1073741823 2147483647 (database metadata)
user-defined type less than or equal to 8 kB 8 kB (result set and parameter metadata) Actual size returned by the stored procedure.
time The length in characters of the string representation of the type, assuming the maximum allowed precision of the fractional seconds' component.
date same as time
datetime2 same as time
datetimeoffset same as time

The BUFFER_LENGTH column has the following change:

SQL Server Data Type Return Type in JDBC Driver 2.0 Return Type in JDBC Driver 3.0
user-defined type larger than 8 kB 2147483647

The TYPE_NAME column has the following changes:

SQL Server Data Type Return Type in JDBC Driver 2.0 Return Type in JDBC Driver 3.0
varchar(max) text varchar
varbinary(max) image varbinary

The DECIMAL_DIGITS column has the following changes:

SQL Server Type JDBC Driver 2.0 JDBC Driver 3.0
time null 7 (or smaller if specified)
date null null
datetime2 null 7 (or smaller if specified)
datetimeoffset null 7 (or smaller if specified)

The SQL_DATA_TYPE column has the following changes:

SQL Server Data Type SQL Server 2008 Data Value in JDBC Driver 2.0 SQL Server 2008 Data Value in JDBC Driver 3.0
varchar(max) -10 -9
nvarchar(max) -1 -9
xml -10 -152
user-defined type less than or equal to 8 kB -3 -151
user-defined type larger than 8 kB Not available in JDBC Driver 2.0 -151
geography -4 -151
geometry -4 -151
hierarchyid -4 -151
time -9 92
date -9 91
datetime2 -9 93
datetimeoffset -9 -155

Example

The following example demonstrates how to use the getColumns method to return information for the Person.Contact table in the AdventureWorks2022 sample database.

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 {}  
   }  
}  

See Also

SQLServerDatabaseMetaData Methods
SQLServerDatabaseMetaData Members
SQLServerDatabaseMetaData Class