MySql驱动通过元数据无法取得表注释

今天需要读取MySql的一个表格的注释,看到通过元数据可以读取,进行了测试代码,就是读取不出来,值为空,但是查看元数据表TABLES中的TABLE_COMMENT字段值是存在的,感觉异常奇怪,本来是在eclipse的插件中进行读取,难道需要自己手动编写读取代码?真是郁闷啊

    然后下载了Mysql的驱动源程序进行了代码的查询,发现他根本就不会读取注释字段,他所有的元数据表信息中的信息都来源于SHOW FULL TABLES FROM这个语句,这个语句只提供了二列数据

| Tables_in_pf       | Table_type |

也就是表明和表的类型

他在代码生命取得数据的时候已经将表注释长度设置成0了,所有根本无法从驱动的元数据中读取到表格的注释信息

  fields[0] = new Field("", "TABLE_CAT", java.sql.Types.VARCHAR, 255);
  fields[1] = new Field("", "TABLE_SCHEM", java.sql.Types.VARCHAR, 0);
  fields[2] = new Field("", "TABLE_NAME", java.sql.Types.VARCHAR, 255);
  fields[3] = new Field("", "TABLE_TYPE", java.sql.Types.VARCHAR, 5);
  fields[4] = new Field("", "REMARKS", java.sql.Types.VARCHAR, 0); ----存放注释的内容,长度为0

 

 

估计用的很少吧,这种需求都不能满足。

=====================

考虑到开发的需要,建立新里开发驱动,等到正式系统运行的时候采用正式的驱动程序,现在希望oracle的驱动可以读取到这个值。

扩展添加方法

 private byte[] getTableComment(String tableName,Connection conn){
  Statement st=null;
  ResultSet rs=null;
  String result="";
  try {
   st = conn.createStatement();
   rs = st.executeQuery("SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='"+tableName+"'");
   while(rs.next()){
    result = rs.getString(1);
    break;
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   try {
    if(rs!=null)rs.close();
    rs = null;
    if(st!=null)st.close();
    st=null;
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return result.getBytes();
 }

经过测试程序读取,真的可以去到了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值