检索指定目录中可用的表列的说明。
语法
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。
返回值
异常
备注
此 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)”。 |
在 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(); } }