检索指定目录中可用的表列的说明。

语法

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

参数

catalog

包含目录名称的 String

schema

包含架构名称模式的 String

table

包含表名称模式的 String

col

包含列名称模式的 String

返回值

SQLServerResultSet 对象。

异常

SQLServerException

备注

getColumns 方法由 java.sql.DatabaseMetaData 接口中的 getColumns 方法指定。

getColumns 方法返回的结果集将包含下列信息:

名称 类型 说明

TABLE_CAT

String

目录名称。

TABLE_SCHEM

String

表架构的名称。

TABLE_NAME

String

表的名称。

COLUMN_NAME

String

列名称。

DATA_TYPE

smallint

来自 java.sql.Types 的 SQL 数据类型。

TYPE_NAME

String

数据类型的名称。

COLUMN_SIZE

int

列的精度。

BUFFER_LENGTH

smallint

数据的传输大小。

DECIMAL_DIGITS

smallint

列的小数位数。

NUM_PREC_RADIX

smallint

列的基数。

NULLABLE

smallint

指示列是否可以为 Null。可以是下列值之一:

columnNoNulls (0)

columnNullable (1)

REMARKS

String

与列关联的注释。

注意: 对于此列,SQL Server 始终返回 Null。

COLUMN_DEF

String

列的默认值。

SQL_DATA_TYPE

smallint

SQL 数据类型出现在描述符的 TYPE 字段中时的值。该列与 DATA_TYPE 列相同,datetime 和 SQL-92 interval 数据类型除外。该列始终返回值。

SQL_DATETIME_SUB

smallint

datetime 及 SQL-92 interval 数据类型的子类型代码。对于其他数据类型,该列返回 NULL。

CHAR_OCTET_LENGTH

int

列中的最大字节数。

ORDINAL_POSITION

int

列在表中的索引。

IS_NULLABLE

String

指示列是否允许 Null 值。

SS_IS_SPARSE

smallint

如果该列是稀疏列,它将具有值 VARIANT_TRUE;否则,为 VARIANT_FALSE。

SS_IS_COLUMN_SET

smallint

如果该列是稀疏 column_set 列,则它具有值 VARIANT_TRUE;否则,为 VARIANT_FALSE。

SS_IS_COMPUTED

smallint

指示 TABLE_TYPE 中的列是否为计算所得的列。

IS_AUTOINCREMENT

String

如果列是自动递增的,则为“是”。如果列不是自动递增的,则为“否”。如果驱动程序无法确定列是否为自动递增,则为 ""(空字符串)。

SS_UDT_CATALOG_NAME

String

包含用户定义类型 (UDT) 的目录名称。

SS_UDT_SCHEMA_NAME

String

包含用户定义类型 (UDT) 的架构名称。

SS_UDT_ASSEMBLY_TYPE_NAME

String

采用完全限定名称的用户定义类型 (UDT)。

SS_XML_SCHEMACOLLECTION_CATALOG_NAME

String

在其中定义 XML 架构集合名称的目录的名称。如果找不到目录名称,则此变量包含空字符串。

SS_XML_SCHEMACOLLECTION_SCHEMA_NAME

String

在其中定义 XML 架构集合名称的架构的名称。如果找不到架构名称,则为空字符串。

SS_XML_SCHEMACOLLECTION_NAME

String

XML 架构集合的名称。如果找不到名称,则为空字符串。

SS_DATA_TYPE

tinyint

扩展存储过程使用的 SQL Server 数据类型。

注意   有关 SQL Server 返回的数据类型的详细信息,请参阅 SQL Server 联机丛书中的“数据类型 (Transact-SQL)”。

注意: 有关 getColumns 方法返回的数据的详细信息,请参阅 SQL Server 联机丛书中的“sp_columns (Transact-SQL)”。

在 Microsoft SQL Server JDBC Driver 3.0 中,您将看到有别于以往 JDBC 驱动程序版本的以下行为更改:

DATA_TYPE 列具有以下更改:

SQL Server 数据类型 返回 JDBC Driver 2.0 中的类型和关联数值常量 返回 JDBC Driver 3.0 中的类型

大于 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) 或 LONGNVARCHAR (JDBC 4) (-16)

VARCHAR (12) 或 NVARCHAR (JDBC 4) (-9)

varchar(max)

LONGVARCHAR (-1)

VARCHAR (12)

time

VARCHAR (12) 或 NVARCHAR (JDBC 4) (-9)

TIME (-154)

date

VARCHAR (12) 或 NVARCHAR (JDBC 4) (-9)

DATE (91)

datetime2

VARCHAR (12) 或 NVARCHAR (JDBC 4) (-9)

TIMESTAMP (93)

datetimeoffset

VARCHAR (12) 或 NVARCHAR (JDBC 4) (-9)

microsoft.sql.Types.DATETIMEOFFSET (-155)

COLUMN_SIZE 列具有以下更改:

SQL Server 数据类型 返回 JDBC Driver 2.0 中的类型 返回 JDBC Driver 3.0 中的类型

nvarchar(max)

1073741823

2147483647(数据库元数据)

xml

1073741823

2147483647(数据库元数据)

小于或等于 8 kB 的用户定义类型

8 kB(结果集和参数元数据)

存储过程返回的实际大小。

time

类型的字符串表示形式的字符长度,假定精度允许的最大值为秒的小数形式。

date

与 time 相同

datetime2

与 time 相同

datetimeoffset

与 time 相同

BUFFER_LENGTH 列具有以下更改:

SQL Server 数据类型 返回 JDBC Driver 2.0 中的类型 返回 JDBC Driver 3.0 中的类型

大于 8 kB 的用户定义类型

2147483647

TYPE_NAME 列具有以下更改:

SQL Server 数据类型 返回 JDBC Driver 2.0 中的类型 返回 JDBC Driver 3.0 中的类型

varchar(max)

text

varchar

varbinary(max)

image

varbinary

DECIMAL_DIGITS 列具有以下更改:

SQL Server 类型 JDBC Driver 2.0 JDBC Driver 3.0

time

null

7(或指定的较小值)

date

null

null

datetime2

null

7(或指定的较小值)

datetimeoffset

null

7(或指定的较小值)

SQL_DATA_TYPE 列具有以下更改:

SQL Server 数据类型 JDBC Driver 2.0 中的 SQL Server 2008 数据值 JDBC Driver 3.0 中的 SQL Server 2008 数据值

varchar(max)

-10

-9

nvarchar(max)

-1

-9

xml

-10

-152

小于或等于 8 kB 的用户定义类型

-3

-151

大于 8 kB 的用户定义类型

在 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

示例

下例演示了如何使用 getColumns 方法返回 SQL Server 2005 AdventureWorks 示例数据库中的 Person.Contact 表的 FirstName 列的信息。

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();
   }
}

请参阅

SQLServerDatabaseMetaData 类
SQLServerDatabaseMetaData 方法
SQLServerDatabaseMetaData 成员