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
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 VARIANT_TRUE; otherwise, VARIANT_FALSE. |
SS_IS_COLUMN_SET |
smallint |
If the column is the sparse column_set column, this has the value VARIANT_TRUE; otherwise, VARIANT_FALSE. |
SS_IS_COMPUTED |
smallint |
Indicates if a column in a TABLE_TYPE is a computed column. |
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. |
SS_UDT_CATALOG_NAME |
String |
The name of the catalog that contains the user-defined type (UDT). |
SS_UDT_SCHEMA_NAME |
String |
The name of the schema that contains the user-defined type (UDT). |
SS_UDT_ASSEMBLY_TYPE_NAME |
String |
The fully-qualified name user-defined type (UDT). |
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. |
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. |
SS_XML_SCHEMACOLLECTION_NAME |
String |
The name of an XML schema collection. If the name cannot be found, this is an empty string. |
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. |
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 and Associated Numeric Constant | Return Type in JDBC Driver 3.0 |
---|---|---|
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 FirstName column in the Person.Contact table in the SQL Server 2005 AdventureWorks sample database.
public static void executeGetColumns(Connection con) { try { DatabaseMetaData dbmd = con.getMetaData(); ResultSet rs = dbmd.getColumns("AdventureWorks", "Person", "Contact", "FirstName"); ResultSetMetaData rsmd = rs.getMetaData(); // Display the result set data. int cols = rsmd.getColumnCount(); while(rs.next()) { for (int i = 1; i <= cols; i++) { System.out.println(rs.getString(i)); } } rs.close(); } catch (Exception e) { e.printStackTrace(); } }