如何查询Derby中的元数据内容

在数据库开发过程中,我们经常会遇到需要查询元数据类型的情况。在SQL server中,我们可以利用数据库提供的架构视图来获取我们想要的信息。以下是常用的架构视图,

 INFORMATION_SCHEMA.CHECK_CONSTRAINTS:返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。
 INFORMATION_SCHEMA.COLUMNS:返回当前数据库中当前用户可以访问的所有列及其基本信息。
 INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE:返回当前数据库中定义了约束的所有列及其约束名。
 INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE:返回当前数据库中定义了约束的所有表及其约束名。
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE:返回当前数据库中作为主键/外键约束的所有列。
 INFORMATION_SCHEMA.SCHEMATA:返回当前用户具有权限的所有数据库及其基本信息。
 INFORMATION_SCHEMA.TABLES:返回当前用户具有权限的当前数据库中的所有表或者视图及其基本信息。
 INFORMATION_SCHEMA.VIEWS:返回当前数据库中的当前用户可以访问的视图及其所有者、定义等信息。
 由于这些信息架构都是以视图的方式存在的,因此我们可以很方便地获得并利用需要的信息。

查询所有表的例子

 
  
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = ' BASE TABLE '

查询指定表中列的例子

 
  
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 表名

那么在Derby中,我们要怎么做呢? Java为我们提供了一系列标准的操作方式,以下是获取表和列的信息

 
  
.getTables( null , null , null , 类型集);
.getColumns(
null , null , 表名, null );

getTables(String catalog,string schemapattern,String tablenamepattern,Strin[] type) 
返回一个ResultSet对象,每行为一个表的描述,每行的类型和意义如下: 

TABLE_CAT:String 类型,表的目录,可能为null; 
catalog 字符串,目录名,""(空串)可以检索没有目录的表,null表示忽略目录; 
schemapattern字符串,为大纲名称的匹配模式,""可以检索没有大纲的表 
tablenamepattern字符串,为表名匹配模式; 
type字符串,为需要检索的表类型列表,null 表示返回所有类型; 

代码
 
   
/**
*
@param args
*/
public static void main(String[] args) {
Connection conn
= creatJDBCConnection();
ResultSet oResults
= null ;
String[] types
= { " TABLE " };
try {
oResults
= conn.getMetaData().getTables( null , null , null , types);
while (oResults.next()) {
String tt
= oResults.getString( " TABLE_NAME " );
String tp
= oResults.getString( " TABLE_TYPE " );
System.out.println(
" 表的名称 " + tt + " 表的类型 " + tp);

ResultSet rResults
= null ;
rResults
= conn.getMetaData().getColumns( null , null , tt, null );
while (rResults.next()) {
String ct
= rResults.getString( " COLUMN_NAME " );
String cp
= rResults.getString( " TYPE_NAME " );
String cd
= rResults.getString( " COLUMN_SIZE " );
System.out.println(
" -- " + ct + " " + cp + " " + cd);
}
}


conn.close();

}
catch (SQLException e) {
e.printStackTrace();
}
}

 

 

 

 

 

 

转载于:https://www.cnblogs.com/moonz-wu/archive/2010/12/24/1915436.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值