要数据库检索指定表中的所有列和对应信息,请:
(以MySQL和Oracle为例,其他类型的数据库很少接触,因此不进行说明。)
数据库元数据接口可以在连接接口上使用。
提供:需要传递四个参数的getColumns ()方法:
第一个是数据库名称。 对于MySQL,对应于相应的数据库;对于Oracle,对应于相应的数据库实例。 可以不输入,也可以直接使用Connection实例对象的getCatalog )方法返回的值进行输入。
第二种模式可以理解为数据库的登录名。 此外,Oracle还可以将其理解为数据库操作所有者的登录名。 在Oracle中,登录名必须大写。 如果不大写,则无法获取适当的数据,但在MySQL中不是必需的。
第三个是表名,用于传递要搜索的表
第四种列类型,如果为空,则获取与表对应的所有列,如果不为空,则获取该值列的所有信息。
返回23列ResultSet对象,详细说明表的类型。
TABLE_CAT String=表类别(
空值)
TABLE_SCHEM String=表模式(
空值)
TABLE_NAME String=表名
COLUMN_NAME String=列名
从DATA_TYPE int=开始
java.sql.Types的SQL类型
TYPE_NAME String=
数据源依赖的类型名称。 对于UDT,此类型名称是完全限定的
COLUMN_SIZE int=列的大小。
未使用BUFFER_LENGTH。
DECIMAL_DIGITS int=
小数部分的位数。 如果DECIMAL_DIGITS是不适用的数据类型,则返回Null。
NUM_PREC_RADIX int=基数(
10或2 )
空值int=是否允许使用
空值。
列无空值-空值可能不可用
column nullable -显式允许使用空值
不知道是否可以使用columnnullableunknown-null
REMARKS String=说明列的注释(
空值)
COLUMN_DEF String=
如果值用单引号括起来,则此列的缺省值将被解释为字符串。 空值也可以
SQL_DATA_TYPE int=未使用
SQL_DATETIME_SUB int=
未使用
相对于CHAR_OCTET_LENGTH int=的
char类型,它是列中的最大字节数
ORDINAL_POSITION int=
表中列的索引(从1开始)
IS_NULLABLE String=ISO
规则确定列是否包含空值。
YES ---如果参数可以包含NULL
NO ---如果参数不能包含空值
空字符串---如果不确定参数是否可以包含null
SCOPE_CATLOG String=
的类别。 引用属性的范围。 如果DATA_TYPE不是REF,则为空)
SCOPE_SCHEMA String=
的架构。 引用属性的范围。 如果DATA_TYPE不是REF,则为空)
SCOPE_TABLE String=
作为引用属性范围的表名。 如果DATA_TYPE不是REF,则为空)
SOURCE_DATA_TYPE short=
来自不同类型或用户生成的Ref类型、java.sql.Types的SQL类型的源类型(如果DATA_TYPE不是)
DISTINCT或用户生成的REF时为null )
IS_AUTOINCREMENT String=
指示此列是否自动增加
是---如果此列自动增加
否---如果此列不自动增加
空字符串---如果列不确定是否自动添加参数
可以根据需要使用
样本:
databasemetadatametadata=conn.get metadata (;
//resultset RS=metadata.get columns
(conn.getCatalog ()、' SCOTT '、' EMP '、' SAL ' );
ResultSet rs=
元数据. get columns (conn.get catalog )、' root )、' book )、
' book_id ';
while(RS.next ) ) system.out.println ) RS.getstring('column_name ' );
}
使用时,建议将所有参数大写以屏蔽每个数据库之间的差异