MetaData类获取数据库元数据操作

MetaData类简要介绍:

MetaData类用来获取数据库的基本信息,分为两类:数据库元数据DatabaseMataData类和结果集元数据ResultSetMetaData类。主要用处:用于ORM概念,在由数据库表结构生成Java类结构时需要到此方法。

参考手册:

有些 DatabaseMetaData方法以 ResultSet 对象的形式返回信息列表。常规 ResultSet 方法,比如 getString 和 getInt,可用于从这些 ResultSet 对 象中检索数据。如果给定形式的元数据不可用,则 ResultSet 获取方法抛 出 SQLException。
有些DatabaseMetaData方法使用 String 模式的参数。这些参数都有 fooPattern 这样的名称。在模式 String 中,”%” 表示匹配 0 个或多个字符 的任何子字符串,”_” 表示匹配任何一个字符。仅返回匹配搜索模式的元数 据项。如果将搜索模式参数设置为 null,则从搜索中删除参数标准。


解决项目一SORM中的获取数据库信息并存储的问题:

1)通过连接对象获取数据库元数据DatabaseMataData:
Connection con=DBManager.getCon();//已封装好的类的方法,返回一个Connection对象。
DatabaseMetaData metaDB=con.getMetaData();
2)通过DatabaseMetaData获取数据库中所有表的信息:
ResultSet rsTables=metaDB.getTables(null,"%","%", new   String[]{"TABLE"});//获取所有表
3)通过游标获取数据库中每张表的信息并存储:

1 获取表名:

private static List<String>tName=new ArrayList<String>();//存放表名
String tableName=(String) rsTables.getObject("TABLE_NAME");
tName.add(tableName);

2 获取获取一张表的所有列名和数据类型:

Private static Map<String,Map<String,String>>mapField=new HashMap<String,Map<String,String>>();// 存储每个表的所有属性和数据类型
ResultSet rsColumn=metaDB.getColumns(null, "%", tableName, "%");//获取列名
    while(rsColumn.next()){
        if(field==null){
            field=new HashMap();
        }
        Object cname=rsColumn.getObject("COLUMN_NAME");
        Object ctype=rsColumn.getObject("TYPE_NAME");//获取数据类型
        field.put(cname, ctype);
    }
mapField.put(tableName,field);

3 获取一张表的主键信息:

    //存储每个表对应的联合主键
    private static Map<String,List<String>>mapUnionKey=new HashMap<String,List<String>>();
    // 存储每个表对应的唯一主键
    private static Map<String,String>mapOnlyKey=new HashMap<String,String>();

ResultSet rsKey=metaDB.getPrimaryKeys(null, "%", tableName);//获取一张表的主键信息
List keyList=new ArrayList();
while(rsKey.next()){
    keyList.add(rsKey.getObject("COLUMN_NAME"));//存储主键的列名
}

if(keyList.size()>1){
    mapUnionKey.put(tableName, keyList);//联合主键
}else{
    mapOnlyKey.put(tableName, (String) keyList.get(0));//唯一主键
}

通过循环数据库,获取每一张表的信息,并用Java容器进行存储。既然可以拿到数据库中每张表的信息,那么我们便可以通过这些信息,用Javabean的存储方式来存储表结构,并且让程序根据数据库信息自动生成类结构。

    Ps:程序中有些方法或参数,博主也不是很熟悉,大家参考时请多查阅API文档。

下次继续:根据数据库信息自动生成类结构。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值